Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
laki_icu_app
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张宏
laki_icu_app
Commits
5dc83081
Commit
5dc83081
authored
Jun 27, 2026
by
akari
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 修复部分蓝牙逻辑
parent
6d1704c6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
90 additions
and
82 deletions
+90
-82
device_control_bloc.dart
lib/blocs/device_control/device_control_bloc.dart
+0
-0
device_control_state.dart
lib/blocs/device_control/device_control_state.dart
+3
-3
device_control_bo.dart
lib/models/bo/device_control_bo.dart
+0
-0
bluetooth_manager.dart
lib/utils/bluetooth/bluetooth_manager.dart
+4
-1
device_control_index_view.dart
.../monitoring/device_control/device_control_index_view.dart
+1
-7
device_control_care_panel.dart
...ing/device_control/widgets/device_control_care_panel.dart
+2
-13
device_control_common.dart
...itoring/device_control/widgets/device_control_common.dart
+6
-6
device_control_confirm_dialog.dart
...device_control/widgets/device_control_confirm_dialog.dart
+10
-6
device_control_metric_card.dart
...ng/device_control/widgets/device_control_metric_card.dart
+50
-11
device_control_mode_panel.dart
...ing/device_control/widgets/device_control_mode_panel.dart
+1
-7
device_control_time_panel.dart
...ing/device_control/widgets/device_control_time_panel.dart
+1
-5
device_control_wind_panel.dart
...ing/device_control/widgets/device_control_wind_panel.dart
+3
-19
monitoring_index_cubit.dart
lib/views/monitoring/index/cubit/monitoring_index_cubit.dart
+9
-4
No files found.
lib/blocs/device_control/device_control_bloc.dart
View file @
5dc83081
This diff is collapsed.
Click to expand it.
lib/blocs/device_control/device_control_state.dart
View file @
5dc83081
...
@@ -21,7 +21,7 @@ const DeviceControlBO _defaultDeviceControlBO = DeviceControlBO(
...
@@ -21,7 +21,7 @@ const DeviceControlBO _defaultDeviceControlBO = DeviceControlBO(
),
),
oxygenConcentration:
OxygenConcentrationBO
(
oxygenConcentration:
OxygenConcentrationBO
(
currentValue:
'--'
,
currentValue:
'--'
,
setValue:
'
9
0'
,
setValue:
'
6
0'
,
unit:
'%'
,
unit:
'%'
,
isOn:
true
,
isOn:
true
,
),
),
...
@@ -41,10 +41,10 @@ const DeviceControlBO _defaultDeviceControlBO = DeviceControlBO(
...
@@ -41,10 +41,10 @@ const DeviceControlBO _defaultDeviceControlBO = DeviceControlBO(
currentMode:
WindSpeedMode
.
sleep
,
currentMode:
WindSpeedMode
.
sleep
,
),
),
nebulizationTime:
NebulizationTimeBO
(
nebulizationTime:
NebulizationTimeBO
(
setMinutes:
'
0
0'
,
setMinutes:
'
3
0'
,
),
),
disinfectionTime:
DisinfectionTimeBO
(
disinfectionTime:
DisinfectionTimeBO
(
setMinutes:
'
14
'
,
setMinutes:
'
30
'
,
),
),
openOxygen:
OpenOxygenControlBO
(
openOxygen:
OpenOxygenControlBO
(
isOn:
false
,
isOn:
false
,
...
...
lib/models/bo/device_control_bo.dart
View file @
5dc83081
This diff is collapsed.
Click to expand it.
lib/utils/bluetooth/bluetooth_manager.dart
View file @
5dc83081
...
@@ -747,7 +747,10 @@ class BleBluetoothManager<T> {
...
@@ -747,7 +747,10 @@ class BleBluetoothManager<T> {
}
}
static
bool
_startsWithAny
(
String
value
,
List
<
String
>
prefixes
)
{
static
bool
_startsWithAny
(
String
value
,
List
<
String
>
prefixes
)
{
return
prefixes
.
any
(
value
.
startsWith
);
final
normalizedValue
=
value
.
trim
().
toUpperCase
();
return
prefixes
.
any
(
(
prefix
)
=>
normalizedValue
.
startsWith
(
prefix
.
trim
().
toUpperCase
()),
);
}
}
static
String
_normalizeRemoteIdForSort
(
String
remoteId
)
{
static
String
_normalizeRemoteIdForSort
(
String
remoteId
)
{
...
...
lib/views/monitoring/device_control/device_control_index_view.dart
View file @
5dc83081
...
@@ -10,7 +10,6 @@ import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
...
@@ -10,7 +10,6 @@ import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
import
'cubit/device_control_index_cubit.dart'
;
import
'cubit/device_control_index_cubit.dart'
;
import
'cubit/device_control_index_state.dart'
;
import
'cubit/device_control_index_state.dart'
;
import
'widgets/device_control_care_panel.dart'
;
import
'widgets/device_control_care_panel.dart'
;
import
'widgets/device_control_confirm_dialog.dart'
;
import
'widgets/device_control_info_panel.dart'
;
import
'widgets/device_control_info_panel.dart'
;
import
'widgets/device_control_metric_card.dart'
;
import
'widgets/device_control_metric_card.dart'
;
import
'widgets/device_control_mode_panel.dart'
;
import
'widgets/device_control_mode_panel.dart'
;
...
@@ -163,16 +162,11 @@ class _DeviceControlLayout extends StatelessWidget {
...
@@ -163,16 +162,11 @@ class _DeviceControlLayout extends StatelessWidget {
icon:
Icons
.
air
,
icon:
Icons
.
air
,
body:
'开启后风扇打开、制冷、加热和
\n
循环等设备暂停。'
,
body:
'开启后风扇打开、制冷、加热和
\n
循环等设备暂停。'
,
warning:
'*保持设备周围空气相对禁止,严禁烟火'
,
warning:
'*保持设备周围空气相对禁止,严禁烟火'
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
DeviceControlOpenOxygenSwitchChanged
(!
isOn
),
DeviceControlOpenOxygenSwitchChanged
(!
isOn
),
),
),
);
);
},
},
);
},
),
),
),
),
SizedBox
(
height:
24
.
h
),
SizedBox
(
height:
24
.
h
),
...
...
lib/views/monitoring/device_control/widgets/device_control_care_panel.dart
View file @
5dc83081
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
import
'package:laki_icu_app/models/bo/device_control_bo.dart'
;
import
'package:laki_icu_app/models/bo/device_control_bo.dart'
;
import
'device_control_common.dart'
;
import
'device_control_common.dart'
;
import
'device_control_confirm_dialog.dart'
;
/// 护理等级面板
/// 护理等级面板
class
DeviceControlCarePanel
extends
StatelessWidget
{
class
DeviceControlCarePanel
extends
StatelessWidget
{
...
@@ -37,14 +36,9 @@ class DeviceControlCarePanel extends StatelessWidget {
...
@@ -37,14 +36,9 @@ class DeviceControlCarePanel extends StatelessWidget {
Expanded
(
Expanded
(
child:
GestureDetector
(
child:
GestureDetector
(
behavior:
HitTestBehavior
.
opaque
,
behavior:
HitTestBehavior
.
opaque
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
DeviceControlCareLevelChanged
(
item
.
level
),
DeviceControlCareLevelChanged
(
item
.
level
),
),
),
);
},
child:
Text
(
child:
Text
(
item
.
label
,
item
.
label
,
textAlign:
TextAlign
.
center
,
textAlign:
TextAlign
.
center
,
...
@@ -107,16 +101,11 @@ class _CareLevelBar extends StatelessWidget {
...
@@ -107,16 +101,11 @@ class _CareLevelBar extends StatelessWidget {
Expanded
(
Expanded
(
child:
GestureDetector
(
child:
GestureDetector
(
behavior:
HitTestBehavior
.
opaque
,
behavior:
HitTestBehavior
.
opaque
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
DeviceControlCareLevelChanged
(
DeviceControlCareLevelChanged
(
_careLevelItems
[
index
].
level
,
_careLevelItems
[
index
].
level
,
),
),
),
),
);
},
child:
Container
(
child:
Container
(
height:
20
.
h
,
height:
20
.
h
,
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
...
...
lib/views/monitoring/device_control/widgets/device_control_common.dart
View file @
5dc83081
...
@@ -94,14 +94,19 @@ class DeviceControlPill extends StatelessWidget {
...
@@ -94,14 +94,19 @@ class DeviceControlPill extends StatelessWidget {
super
.
key
,
super
.
key
,
required
this
.
text
,
required
this
.
text
,
this
.
active
=
false
,
this
.
active
=
false
,
this
.
onTap
,
});
});
final
String
text
;
final
String
text
;
final
bool
active
;
final
bool
active
;
final
VoidCallback
?
onTap
;
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Container
(
return
GestureDetector
(
behavior:
HitTestBehavior
.
opaque
,
onTap:
onTap
,
child:
Container
(
height:
40
.
h
,
height:
40
.
h
,
constraints:
BoxConstraints
(
minWidth:
90
.
w
),
constraints:
BoxConstraints
(
minWidth:
90
.
w
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
18
.
w
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
18
.
w
),
...
@@ -114,11 +119,6 @@ class DeviceControlPill extends StatelessWidget {
...
@@ -114,11 +119,6 @@ class DeviceControlPill extends StatelessWidget {
),
),
borderRadius:
BorderRadius
.
circular
(
20
.
r
),
borderRadius:
BorderRadius
.
circular
(
20
.
r
),
),
),
child:
GestureDetector
(
onTap:
()
{
var
key
=
super
.
key
;
debugPrint
(
"test
$key
"
);
},
child:
Text
(
child:
Text
(
text
,
text
,
style:
TextStyle
(
style:
TextStyle
(
...
...
lib/views/monitoring/device_control/widgets/device_control_confirm_dialog.dart
View file @
5dc83081
...
@@ -13,8 +13,9 @@ class DeviceControlConfirmConfig {
...
@@ -13,8 +13,9 @@ class DeviceControlConfirmConfig {
Future
<
void
>
confirmDeviceControlChange
(
Future
<
void
>
confirmDeviceControlChange
(
BuildContext
context
,
BuildContext
context
,
VoidCallback
onConfirmed
,
VoidCallback
onConfirmed
,
{
)
async
{
String
message
=
'确认设置当前修改参数'
,
})
async
{
if
(!
DeviceControlConfirmConfig
.
enabled
)
{
if
(!
DeviceControlConfirmConfig
.
enabled
)
{
onConfirmed
();
onConfirmed
();
return
;
return
;
...
@@ -23,7 +24,7 @@ Future<void> confirmDeviceControlChange(
...
@@ -23,7 +24,7 @@ Future<void> confirmDeviceControlChange(
final
confirmed
=
await
showDialog
<
bool
>(
final
confirmed
=
await
showDialog
<
bool
>(
context:
context
,
context:
context
,
barrierColor:
Colors
.
black
.
withValues
(
alpha:
0.44
),
barrierColor:
Colors
.
black
.
withValues
(
alpha:
0.44
),
builder:
(
_
)
=>
const
_DeviceControlConfirmDialog
(
),
builder:
(
_
)
=>
_DeviceControlConfirmDialog
(
message:
message
),
);
);
if
(!
context
.
mounted
||
confirmed
!=
true
)
return
;
if
(!
context
.
mounted
||
confirmed
!=
true
)
return
;
...
@@ -31,7 +32,9 @@ Future<void> confirmDeviceControlChange(
...
@@ -31,7 +32,9 @@ Future<void> confirmDeviceControlChange(
}
}
class
_DeviceControlConfirmDialog
extends
StatelessWidget
{
class
_DeviceControlConfirmDialog
extends
StatelessWidget
{
const
_DeviceControlConfirmDialog
();
const
_DeviceControlConfirmDialog
({
required
this
.
message
});
final
String
message
;
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
...
@@ -83,8 +86,9 @@ class _DeviceControlConfirmDialog extends StatelessWidget {
...
@@ -83,8 +86,9 @@ class _DeviceControlConfirmDialog extends StatelessWidget {
),
),
const
Spacer
(),
const
Spacer
(),
Text
(
Text
(
'确认设置当前修改参数'
,
message
,
maxLines:
1
,
maxLines:
3
,
textAlign:
TextAlign
.
center
,
overflow:
TextOverflow
.
ellipsis
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
style:
TextStyle
(
color:
Colors
.
white
,
color:
Colors
.
white
,
...
...
lib/views/monitoring/device_control/widgets/device_control_metric_card.dart
View file @
5dc83081
...
@@ -40,7 +40,12 @@ class DeviceControlMetricCard extends StatelessWidget {
...
@@ -40,7 +40,12 @@ class DeviceControlMetricCard extends StatelessWidget {
previous
.
data
.
oxygenConcentration
.
currentValue
!=
previous
.
data
.
oxygenConcentration
.
currentValue
!=
current
.
data
.
oxygenConcentration
.
currentValue
||
current
.
data
.
oxygenConcentration
.
currentValue
||
previous
.
data
.
co2Concentration
.
currentValue
!=
previous
.
data
.
co2Concentration
.
currentValue
!=
current
.
data
.
co2Concentration
.
currentValue
,
current
.
data
.
co2Concentration
.
currentValue
||
previous
.
data
.
cabinTemp
.
isOn
!=
current
.
data
.
cabinTemp
.
isOn
||
previous
.
data
.
cabinHumidity
.
isOn
!=
current
.
data
.
cabinHumidity
.
isOn
||
previous
.
data
.
oxygenConcentration
.
isOn
!=
current
.
data
.
oxygenConcentration
.
isOn
||
previous
.
data
.
openOxygen
.
isOn
!=
current
.
data
.
openOxygen
.
isOn
,
builder:
(
context
,
state
)
{
builder:
(
context
,
state
)
{
final
currentValue
=
isTemperature
final
currentValue
=
isTemperature
?
state
.
data
.
cabinTemp
.
currentValue
?
state
.
data
.
cabinTemp
.
currentValue
...
@@ -72,6 +77,19 @@ class DeviceControlMetricCard extends StatelessWidget {
...
@@ -72,6 +77,19 @@ class DeviceControlMetricCard extends StatelessWidget {
isOxygen:
isOxygen
,
isOxygen:
isOxygen
,
isCo2:
isCo2
,
isCo2:
isCo2
,
);
);
final
isSwitchOn
=
isTemperature
?
state
.
data
.
cabinTemp
.
isOn
:
isHumidity
?
state
.
data
.
cabinHumidity
.
isOn
:
isOxygen
?
state
.
data
.
oxygenConcentration
.
isOn
:
false
;
final
switchEventBuilder
=
_switchEventBuilder
(
isTemperature:
isTemperature
,
isHumidity:
isHumidity
,
isOxygen:
isOxygen
,
);
final
displaySetValue
=
!
isCo2
&&
!
isSwitchOn
?
'--'
:
setValue
;
return
DeviceControlPanelFrame
(
return
DeviceControlPanelFrame
(
active:
isOxygen
,
active:
isOxygen
,
...
@@ -86,12 +104,18 @@ class DeviceControlMetricCard extends StatelessWidget {
...
@@ -86,12 +104,18 @@ class DeviceControlMetricCard extends StatelessWidget {
child:
DeviceControlPanelTitle
(
_title
(
metric
.
label
)),
child:
DeviceControlPanelTitle
(
_title
(
metric
.
label
)),
),
),
DeviceControlPill
(
DeviceControlPill
(
text:
isOxygen
text:
isCo2
?
'PPM'
:
(
isSwitchOn
?
'ON'
:
'Off'
),
?
'ON'
active:
!
isCo2
&&
isSwitchOn
,
:
isCo2
onTap:
switchEventBuilder
==
null
?
'PPM'
?
null
:
'Off'
,
:
()
{
active:
isOxygen
,
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
switchEventBuilder
(!
isSwitchOn
),
),
);
},
),
),
],
],
),
),
...
@@ -166,7 +190,6 @@ class DeviceControlMetricCard extends StatelessWidget {
...
@@ -166,7 +190,6 @@ class DeviceControlMetricCard extends StatelessWidget {
?
null
?
null
:
()
=>
_showSetValueKeyboard
(
:
()
=>
_showSetValueKeyboard
(
context
,
context
,
initialValue:
setValue
,
decimalEnabled:
isTemperature
,
decimalEnabled:
isTemperature
,
eventBuilder:
setValueEventBuilder
,
eventBuilder:
setValueEventBuilder
,
),
),
...
@@ -174,7 +197,7 @@ class DeviceControlMetricCard extends StatelessWidget {
...
@@ -174,7 +197,7 @@ class DeviceControlMetricCard extends StatelessWidget {
padding:
padding:
EdgeInsets
.
symmetric
(
horizontal:
18
.
w
,
vertical:
8
.
h
),
EdgeInsets
.
symmetric
(
horizontal:
18
.
w
,
vertical:
8
.
h
),
child:
Text
(
child:
Text
(
s
etValue
,
displayS
etValue
,
style:
TextStyle
(
style:
TextStyle
(
color:
isCo2
color:
isCo2
?
const
Color
(
0xFFFFC400
)
?
const
Color
(
0xFFFFC400
)
...
@@ -262,15 +285,31 @@ class DeviceControlMetricCard extends StatelessWidget {
...
@@ -262,15 +285,31 @@ class DeviceControlMetricCard extends StatelessWidget {
return
null
;
return
null
;
}
}
static
DeviceControlEvent
Function
(
bool
isOn
)?
_switchEventBuilder
({
required
bool
isTemperature
,
required
bool
isHumidity
,
required
bool
isOxygen
,
})
{
if
(
isTemperature
)
{
return
(
isOn
)
=>
DeviceControlCabinTempSwitchChanged
(
isOn
);
}
if
(
isHumidity
)
{
return
(
isOn
)
=>
DeviceControlCabinHumiditySwitchChanged
(
isOn
);
}
if
(
isOxygen
)
{
return
(
isOn
)
=>
DeviceControlOxygenConcentrationSwitchChanged
(
isOn
);
}
return
null
;
}
static
Future
<
void
>
_showSetValueKeyboard
(
static
Future
<
void
>
_showSetValueKeyboard
(
BuildContext
context
,
{
BuildContext
context
,
{
required
String
initialValue
,
required
bool
decimalEnabled
,
required
bool
decimalEnabled
,
required
DeviceControlEvent
Function
(
String
value
)
eventBuilder
,
required
DeviceControlEvent
Function
(
String
value
)
eventBuilder
,
})
async
{
})
async
{
final
result
=
await
NumericKeyboard
.
show
(
final
result
=
await
NumericKeyboard
.
show
(
context
,
context
,
initialValue:
initialValue
==
'--'
?
''
:
initialValue
,
initialValue:
''
,
decimalEnabled:
decimalEnabled
,
decimalEnabled:
decimalEnabled
,
);
);
if
(!
context
.
mounted
||
result
==
null
)
return
;
if
(!
context
.
mounted
||
result
==
null
)
return
;
...
...
lib/views/monitoring/device_control/widgets/device_control_mode_panel.dart
View file @
5dc83081
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
import
'package:laki_icu_app/models/bo/device_control_bo.dart'
;
import
'package:laki_icu_app/models/bo/device_control_bo.dart'
;
import
'device_control_common.dart'
;
import
'device_control_common.dart'
;
import
'device_control_confirm_dialog.dart'
;
/// 模式切换面板(外循环/检查灯/照明灯/内循环/蓝光/红光)
/// 模式切换面板(外循环/检查灯/照明灯/内循环/蓝光/红光)
class
DeviceControlModePanel
extends
StatelessWidget
{
class
DeviceControlModePanel
extends
StatelessWidget
{
...
@@ -95,14 +94,9 @@ class DeviceControlModePanel extends StatelessWidget {
...
@@ -95,14 +94,9 @@ class DeviceControlModePanel extends StatelessWidget {
label:
item
.
label
,
label:
item
.
label
,
icon:
item
.
icon
,
icon:
item
.
icon
,
active:
item
.
active
,
active:
item
.
active
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
item
.
event
,
item
.
event
,
),
),
);
},
),
),
),
),
],
],
...
...
lib/views/monitoring/device_control/widgets/device_control_time_panel.dart
View file @
5dc83081
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
import
'package:laki_icu_app/utils/numeric_keyboard.dart'
;
import
'package:laki_icu_app/utils/numeric_keyboard.dart'
;
import
'device_control_common.dart'
;
import
'device_control_common.dart'
;
import
'device_control_confirm_dialog.dart'
;
/// 设置雾化/消毒时间面板
/// 设置雾化/消毒时间面板
class
DeviceControlTimePanel
extends
StatelessWidget
{
class
DeviceControlTimePanel
extends
StatelessWidget
{
...
@@ -82,10 +81,7 @@ class DeviceControlTimePanel extends StatelessWidget {
...
@@ -82,10 +81,7 @@ class DeviceControlTimePanel extends StatelessWidget {
final
value
=
result
.
trim
();
final
value
=
result
.
trim
();
if
(
value
.
isEmpty
)
return
;
if
(
value
.
isEmpty
)
return
;
await
confirmDeviceControlChange
(
context
.
read
<
DeviceControlBloc
>().
add
(
eventBuilder
(
value
));
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
eventBuilder
(
value
)),
);
}
}
}
}
...
...
lib/views/monitoring/device_control/widgets/device_control_wind_panel.dart
View file @
5dc83081
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
...
@@ -7,7 +7,6 @@ import 'package:laki_icu_app/blocs/device_control/device_control_state.dart';
import
'package:laki_icu_app/models/bo/device_control_bo.dart'
;
import
'package:laki_icu_app/models/bo/device_control_bo.dart'
;
import
'device_control_common.dart'
;
import
'device_control_common.dart'
;
import
'device_control_confirm_dialog.dart'
;
/// 风速调节面板
/// 风速调节面板
class
DeviceControlWindPanel
extends
StatelessWidget
{
class
DeviceControlWindPanel
extends
StatelessWidget
{
...
@@ -34,16 +33,11 @@ class DeviceControlWindPanel extends StatelessWidget {
...
@@ -34,16 +33,11 @@ class DeviceControlWindPanel extends StatelessWidget {
label:
'睡眠模式'
,
label:
'睡眠模式'
,
icon:
Icons
.
nightlight_round
,
icon:
Icons
.
nightlight_round
,
active:
currentMode
==
WindSpeedMode
.
sleep
,
active:
currentMode
==
WindSpeedMode
.
sleep
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
const
DeviceControlWindSpeedModeChanged
(
const
DeviceControlWindSpeedModeChanged
(
WindSpeedMode
.
sleep
,
WindSpeedMode
.
sleep
,
),
),
),
),
);
},
),
),
),
),
SizedBox
(
height:
18
.
h
),
SizedBox
(
height:
18
.
h
),
...
@@ -52,16 +46,11 @@ class DeviceControlWindPanel extends StatelessWidget {
...
@@ -52,16 +46,11 @@ class DeviceControlWindPanel extends StatelessWidget {
label:
'舒适模式'
,
label:
'舒适模式'
,
icon:
Icons
.
favorite_border
,
icon:
Icons
.
favorite_border
,
active:
currentMode
==
WindSpeedMode
.
comfort
,
active:
currentMode
==
WindSpeedMode
.
comfort
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
const
DeviceControlWindSpeedModeChanged
(
const
DeviceControlWindSpeedModeChanged
(
WindSpeedMode
.
comfort
,
WindSpeedMode
.
comfort
,
),
),
),
),
);
},
),
),
),
),
SizedBox
(
height:
18
.
h
),
SizedBox
(
height:
18
.
h
),
...
@@ -70,16 +59,11 @@ class DeviceControlWindPanel extends StatelessWidget {
...
@@ -70,16 +59,11 @@ class DeviceControlWindPanel extends StatelessWidget {
label:
'强劲模式'
,
label:
'强劲模式'
,
icon:
Icons
.
air
,
icon:
Icons
.
air
,
active:
currentMode
==
WindSpeedMode
.
strong
,
active:
currentMode
==
WindSpeedMode
.
strong
,
onTap:
()
{
onTap:
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
confirmDeviceControlChange
(
context
,
()
=>
context
.
read
<
DeviceControlBloc
>().
add
(
const
DeviceControlWindSpeedModeChanged
(
const
DeviceControlWindSpeedModeChanged
(
WindSpeedMode
.
strong
,
WindSpeedMode
.
strong
,
),
),
),
),
);
},
),
),
),
),
],
],
...
...
lib/views/monitoring/index/cubit/monitoring_index_cubit.dart
View file @
5dc83081
...
@@ -612,7 +612,7 @@ class MonitoringIndexCubit extends HydratedCubit<MonitoringIndexState> {
...
@@ -612,7 +612,7 @@ class MonitoringIndexCubit extends HydratedCubit<MonitoringIndexState> {
try
{
try
{
await
_bluetoothManager
.
scanForDevices
(
await
_bluetoothManager
.
scanForDevices
(
namePrefixes:
const
[],
namePrefixes:
const
[
'CNA'
],
timeout:
const
Duration
(
seconds:
10
),
timeout:
const
Duration
(
seconds:
10
),
);
);
}
catch
(
e
)
{
}
catch
(
e
)
{
...
@@ -916,7 +916,8 @@ class MonitoringIndexCubit extends HydratedCubit<MonitoringIndexState> {
...
@@ -916,7 +916,8 @@ class MonitoringIndexCubit extends HydratedCubit<MonitoringIndexState> {
);
);
// 按告警标题去重:相同标题 → 原地覆盖;不同标题 → 插入头部
// 按告警标题去重:相同标题 → 原地覆盖;不同标题 → 插入头部
final
existingIndex
=
state
.
cameraAlerts
.
indexWhere
((
a
)
=>
a
.
title
==
title
);
final
existingIndex
=
state
.
cameraAlerts
.
indexWhere
((
a
)
=>
a
.
title
==
title
);
if
(
existingIndex
>=
0
)
{
if
(
existingIndex
>=
0
)
{
// 已存在相同标题 → 原地替换
// 已存在相同标题 → 原地替换
final
updatedAlerts
=
List
<
AlertInfoBO
>.
from
(
state
.
cameraAlerts
);
final
updatedAlerts
=
List
<
AlertInfoBO
>.
from
(
state
.
cameraAlerts
);
...
@@ -1361,8 +1362,12 @@ class MonitoringIndexCubit extends HydratedCubit<MonitoringIndexState> {
...
@@ -1361,8 +1362,12 @@ class MonitoringIndexCubit extends HydratedCubit<MonitoringIndexState> {
if
(
client
==
null
||
if
(
client
==
null
||
!
client
.
isConnected
||
!
client
.
isConnected
||
deviceSn
==
null
||
deviceSn
==
null
||
deviceSn
.
isEmpty
)
return
;
deviceSn
.
isEmpty
)
{
if
(
alert
.
alarmId
==
null
)
return
;
return
;
}
if
(
alert
.
alarmId
==
null
)
{
return
;
}
try
{
try
{
client
.
publishCameraAlarmResult
(
client
.
publishCameraAlarmResult
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment