Commit 45154e91 authored by akari's avatar akari

fix: 修复蓝牙操作BUG

parent 2160220c
This diff is collapsed.
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart'; import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/utils/bluetooth/index.dart';
typedef OnMenuItemTap = Function(String menuId); typedef OnMenuItemTap = Function(String menuId);
...@@ -77,14 +78,56 @@ class MonitoringBottomMenu extends StatelessWidget { ...@@ -77,14 +78,56 @@ class MonitoringBottomMenu extends StatelessWidget {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// 图标 StreamBuilder<BluetoothConnectionStatus>(
Container( stream: appBluetoothManager.stateStream,
width: 167.w, initialData: appBluetoothManager.status,
height: 62.h, builder: (context, snapshot) {
child: Image.asset( final status = snapshot.data;
item.iconPath, final isActive =
fit: BoxFit.contain, status == BluetoothConnectionStatus.connectedReady ||
), status == BluetoothConnectionStatus.active;
return SizedBox(
width: 167.w,
height: 62.h,
child: AnimatedContainer(
duration: const Duration(milliseconds: 180),
padding: EdgeInsets.symmetric(
horizontal: isActive ? 7.w : 0,
vertical: isActive ? 4.h : 0,
),
decoration: isActive
? BoxDecoration(
color: const Color(0xFF063D36)
.withValues(alpha: 0.22),
borderRadius: BorderRadius.circular(32.r),
boxShadow: [
BoxShadow(
color: const Color(0xFF39FF88)
.withValues(alpha: 0.18),
blurRadius: 12.w,
spreadRadius: 1.w,
),
],
)
: null,
child: ColorFiltered(
colorFilter: isActive
? const ColorFilter.mode(
Color(0xFF8DFFCB),
BlendMode.srcATop,
)
: const ColorFilter.mode(
Colors.transparent,
BlendMode.dst,
),
child: Image.asset(
item.iconPath,
fit: BoxFit.contain,
),
),
),
);
},
), ),
], ],
......
...@@ -435,6 +435,9 @@ class MonitoringIndexCubit extends Cubit<MonitoringIndexState> { ...@@ -435,6 +435,9 @@ class MonitoringIndexCubit extends Cubit<MonitoringIndexState> {
try { try {
await _bluetoothManager.connectToDevice(device); await _bluetoothManager.connectToDevice(device);
if (!_bluetoothManager.isConnected) {
throw StateError('蓝牙连接未就绪');
}
await _storageService.saveBoundBluetoothDevice( await _storageService.saveBoundBluetoothDevice(
deviceId: device.remoteId, deviceId: device.remoteId,
deviceName: device.name, deviceName: device.name,
...@@ -530,7 +533,11 @@ class MonitoringIndexCubit extends Cubit<MonitoringIndexState> { ...@@ -530,7 +533,11 @@ class MonitoringIndexCubit extends Cubit<MonitoringIndexState> {
'deviceId=$deviceId isConnected=${_bluetoothManager.isConnected}', 'deviceId=$deviceId isConnected=${_bluetoothManager.isConnected}',
); );
if (!isClosed) { if (!isClosed) {
emit(state.copyWith(bluetoothMessage: '蓝牙设备已自动连接')); emit(state.copyWith(
bluetoothMessage: _bluetoothManager.isConnected
? '蓝牙设备已自动连接'
: '蓝牙自动连接未就绪,等待重试',
));
} }
} catch (e) { } catch (e) {
debugPrint( debugPrint(
...@@ -893,9 +900,6 @@ class MonitoringIndexCubit extends Cubit<MonitoringIndexState> { ...@@ -893,9 +900,6 @@ class MonitoringIndexCubit extends Cubit<MonitoringIndexState> {
_mcuReportChangedSub?.cancel(); _mcuReportChangedSub?.cancel();
_webrtcService.dispose(); _webrtcService.dispose();
_p2pVideoService.dispose(); _p2pVideoService.dispose();
return Future.wait([ return _disposeMqttClient().then((_) => super.close());
_disposeMqttClient(),
_bluetoothManager.release(),
]).then((_) => super.close());
} }
} }
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