From a843dd1f31ca05dc1180752958c00d50d929985c Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Tue, 9 Sep 2025 15:00:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(ble=5Fmanager):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=99=BA=E8=83=BD=E7=94=B5=E6=B1=A0=E5=80=BC=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E9=98=B2=E6=AD=A2=E6=9C=89=E6=95=88=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=A2=AB0=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增_getValidBatteryValue方法处理电池数据更新逻辑,避免有效电池值被0异常数据覆盖。当新值为0且当前值有效时保持原值,并记录警告日志。 --- lib/data/services/ble_manager.dart | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/data/services/ble_manager.dart b/lib/data/services/ble_manager.dart index ee309c286..1bd4b11c5 100644 --- a/lib/data/services/ble_manager.dart +++ b/lib/data/services/ble_manager.dart @@ -395,7 +395,7 @@ class BleManager extends GetxService { Logger.info('lxm-- overallBattery: $overallBattery'); Logger.info('lxm--准备调用_updateDeviceInfoIfNeeded'); - + // 更新设备信息 _updateDeviceInfoIfNeeded( batteryLevel: overallBattery, @@ -488,8 +488,10 @@ class BleManager extends GetxService { deviceInfo.value = deviceInfo.value!.copyWith( batteryLevel: batteryLevel ?? deviceInfo.value?.batteryLevel, - leftEarBattery: leftEarBattery ?? deviceInfo.value?.leftEarBattery, - rightEarBattery: rightEarBattery ?? deviceInfo.value?.rightEarBattery, + leftEarBattery: _getValidBatteryValue( + leftEarBattery, deviceInfo.value?.leftEarBattery), + rightEarBattery: _getValidBatteryValue( + rightEarBattery, deviceInfo.value?.rightEarBattery), caseBattery: caseBattery ?? deviceInfo.value?.caseBattery, leftEarCharging: leftEarCharging ?? deviceInfo.value!.leftEarCharging, rightEarCharging: @@ -537,6 +539,24 @@ class BleManager extends GetxService { } } + // 新增智能电池值选择方法 + int? _getValidBatteryValue(int? newValue, int? currentValue) { + // 如果新值为null,使用当前值 + if (newValue == null) return currentValue; + + // 如果当前值为null或0,使用新值(即使新值为0) + if (currentValue == null || currentValue == 0) return newValue; + + // 如果新值为0但当前值不为0,保持当前值(避免有效数据被0覆盖) + if (newValue == 0 && currentValue > 0) { + Logger.warning('检测到电池数据异常(新值为0),保持当前值: $currentValue'); + return currentValue; + } + + // 其他情况使用新值 + return newValue; + } + /// 清除设备信息(用于完全断开连接或切换设备时) void clearDeviceInfo() { Logger.info('清除设备信息');