Commit 68eb6bfe authored by akari's avatar akari

feat: 添加初始化下发功能

parent 0f9cb2e3
......@@ -1071,23 +1071,24 @@ class DeviceControlBloc
DeviceControlResetSettings event,
Emitter<DeviceControlState> emit,
) async {
final newData = state.data.copyWith(
cabinTemp: state.data.cabinTemp.copyWith(isOn: false),
cabinHumidity: state.data.cabinHumidity.copyWith(isOn: false),
oxygenConcentration: state.data.oxygenConcentration.copyWith(
final oldData = state.data;
final newData = oldData.copyWith(
cabinTemp: oldData.cabinTemp.copyWith(isOn: false),
cabinHumidity: oldData.cabinHumidity.copyWith(isOn: false),
oxygenConcentration: oldData.oxygenConcentration.copyWith(
isOn: false,
setValue: _clampIntString(
state.data.oxygenConcentration.setValue,
oldData.oxygenConcentration.setValue,
0,
60,
),
),
openOxygen: state.data.openOxygen.copyWith(isOn: false),
windSpeed: state.data.windSpeed.copyWith(currentMode: WindSpeedMode.off),
nebulizationTime: state.data.nebulizationTime.copyWith(setMinutes: '0'),
disinfectionTime: state.data.disinfectionTime.copyWith(setMinutes: '0'),
careLevel: state.data.careLevel.copyWith(currentLevel: CareLevel.off),
lightControl: state.data.lightControl.copyWith(
openOxygen: oldData.openOxygen.copyWith(isOn: false),
windSpeed: oldData.windSpeed.copyWith(currentMode: WindSpeedMode.off),
nebulizationTime: oldData.nebulizationTime.copyWith(setMinutes: '0'),
disinfectionTime: oldData.disinfectionTime.copyWith(setMinutes: '0'),
careLevel: oldData.careLevel.copyWith(currentLevel: CareLevel.off),
lightControl: oldData.lightControl.copyWith(
checkLightOn: false,
illuminationOn: false,
blueLightOn: false,
......@@ -1115,80 +1116,103 @@ class DeviceControlBloc
clearError: true,
));
if (oldData.cabinTemp.isOn) {
await _writeResetCommandWithDelay(
identifier: 0x02,
setValue: '10',
errorPrefix: '舱内温度关闭',
emit: emit,
);
}
if (oldData.cabinHumidity.isOn) {
await _writeResetCommandWithDelay(
identifier: 0x04,
setValue: '100',
errorPrefix: '舱内湿度关闭',
emit: emit,
);
}
if (oldData.oxygenConcentration.isOn) {
await _writeResetCommandWithDelay(
identifier: 0x05,
setValue: '20',
errorPrefix: '氧气浓度关闭',
emit: emit,
);
}
if (oldData.openOxygen.isOn) {
await _writeResetCommandWithDelay(
identifier: 0x26,
setValue: '0',
errorPrefix: '开放供氧关闭',
emit: emit,
);
}
if (oldData.windSpeed.currentMode != WindSpeedMode.off) {
await _writeResetCommandWithDelay(
identifier: 0xB3,
setValue: '${_windSpeedProtocolValue(WindSpeedMode.off)}',
errorPrefix: '风速关闭',
emit: emit,
);
}
if (oldData.nebulizationTime.setMinutes != '0') {
await _writeResetCommandWithDelay(
identifier: 0x0C,
setValue: '0',
errorPrefix: '雾化关闭',
emit: emit,
);
}
if (oldData.disinfectionTime.setMinutes != '0') {
await _writeResetCommandWithDelay(
identifier: 0x0D,
setValue: '0',
errorPrefix: '消毒关闭',
emit: emit,
);
}
if (oldData.careLevel.currentLevel != CareLevel.off) {
await _writeResetCommandWithDelay(
identifier: 0xA8,
setValue: '${_careLevelProtocolValue(CareLevel.off)}',
errorPrefix: '护理等级关闭',
emit: emit,
);
}
if (oldData.lightControl.checkLightOn) {
await _writeResetCommandWithDelay(
identifier: _lightIdentifier(_LightTarget.check),
setValue: '0',
errorPrefix: '检查灯关闭',
emit: emit,
);
}
if (oldData.lightControl.illuminationOn) {
await _writeResetCommandWithDelay(
identifier: _lightIdentifier(_LightTarget.illumination),
setValue: '0',
errorPrefix: '照明灯关闭',
emit: emit,
);
}
if (oldData.lightControl.blueLightOn) {
await _writeResetCommandWithDelay(
identifier: _lightIdentifier(_LightTarget.blue),
setValue: '0',
errorPrefix: '蓝光关闭',
emit: emit,
);
}
if (oldData.lightControl.redLightOn) {
await _writeResetCommandWithDelay(
identifier: _lightIdentifier(_LightTarget.red),
setValue: '0',
errorPrefix: '红光关闭',
emit: emit,
delayAfter: false,
);
}
}
int get _oxygenSetValueMax => state.data.openOxygen.isOn ? 80 : 60;
......
......@@ -6,6 +6,7 @@ import 'package:laki_icu_app/blocs/device_control/device_control_event.dart';
import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
import 'device_control_common.dart';
import 'device_control_confirm_dialog.dart';
/// 供氧计时 + ICU重置面板
class DeviceControlOxygenTimerPanel extends StatelessWidget {
......@@ -63,9 +64,13 @@ class DeviceControlOxygenTimerPanel extends StatelessWidget {
const Spacer(),
DeviceControlBigActionButton(
text: '初始化设置',
onTap: () => context
onTap: () => confirmDeviceControlChange(
context,
() => context
.read<DeviceControlBloc>()
.add(const DeviceControlResetSettings()),
message: '确认初始化ICU舱设置',
),
),
],
),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment