diff --git a/lib/modules/home/controllers/home_controller.dart b/lib/modules/home/controllers/home_controller.dart index c5cb174cb..a7b702576 100644 --- a/lib/modules/home/controllers/home_controller.dart +++ b/lib/modules/home/controllers/home_controller.dart @@ -42,51 +42,48 @@ class HomeController extends GetxController { BluetoothDevice? get currentDevice => _bluetoothManager.currentDevice; Rx get deviceInfo => _bleManager.deviceInfo; - static final leftEarBattery = 0.obs; - static final rightEarBattery = 0.obs; + static final RxInt leftEarBattery = 0.obs; + static final RxInt rightEarBattery = 0.obs; final caseBattery = 0.obs; final leftEarCharging = false.obs; final rightEarCharging = false.obs; final caseCharging = false.obs; final firmwareVersion = ''.obs; + void updateDeviceInfo(DeviceInfo? newDeviceInfo) { Logger.d(_tag, 'lxm--updateDeviceInfo被调用'); Logger.d(_tag, 'lxm--接收到的DeviceInfo: $newDeviceInfo'); if (newDeviceInfo != null) { - // Logger.d(_tag, 'lxm--原始数据 - 左耳电量: ${newDeviceInfo.leftEarBattery}'); - // Logger.d(_tag, 'lxm--原始数据 - 右耳电量: ${newDeviceInfo.rightEarBattery}'); - // Logger.d(_tag, 'lxm--原始数据 - 充电仓电量: ${newDeviceInfo.caseBattery}'); - // Logger.d(_tag, 'lxm--原始数据 - 左耳充电: ${newDeviceInfo.leftEarCharging}'); - // Logger.d(_tag, 'lxm--原始数据 - 右耳充电: ${newDeviceInfo.rightEarCharging}'); - // Logger.d(_tag, 'lxm--原始数据 - 充电仓充电: ${newDeviceInfo.caseCharging}'); - // Logger.d(_tag, 'lxm--原始数据 - 固件版本: ${newDeviceInfo.firmwareVersion}'); + Logger.d(_tag, 'lxm--原始数据 - 左耳电量: ${newDeviceInfo.leftEarBattery}'); + Logger.d(_tag, 'lxm--原始数据 - 右耳电量: ${newDeviceInfo.rightEarBattery}'); + Logger.d(_tag, 'lxm--原始数据 - 充电仓电量: ${newDeviceInfo.caseBattery}'); + Logger.d(_tag, 'lxm--原始数据 - 左耳充电: ${newDeviceInfo.leftEarCharging}'); + Logger.d(_tag, 'lxm--原始数据 - 右耳充电: ${newDeviceInfo.rightEarCharging}'); + Logger.d(_tag, 'lxm--原始数据 - 充电仓充电: ${newDeviceInfo.caseCharging}'); + Logger.d(_tag, 'lxm--原始数据 - 固件版本: ${newDeviceInfo.firmwareVersion}'); } else { Logger.d(_tag, 'lxm--接收到的DeviceInfo为null'); } // 只有当新数据不为0时才更新电池值,否则保持原值 - if ((newDeviceInfo?.leftEarBattery ?? 0) != 0) { - Logger.d(_tag, 'lxm--更新左耳电量: ${newDeviceInfo!.leftEarBattery}'); - leftEarBattery.value = newDeviceInfo.leftEarBattery; - } - if ((newDeviceInfo?.rightEarBattery ?? 0) != 0) { - Logger.d(_tag, 'lxm--更新右耳电量: ${newDeviceInfo!.rightEarBattery}'); - rightEarBattery.value = newDeviceInfo.rightEarBattery; - } + leftEarBattery.value = newDeviceInfo?.leftEarBattery ?? 0; + rightEarBattery.value = newDeviceInfo?.rightEarBattery ?? 0; caseBattery.value = newDeviceInfo?.caseBattery ?? 0; leftEarCharging.value = newDeviceInfo?.leftEarCharging ?? false; rightEarCharging.value = newDeviceInfo?.rightEarCharging ?? false; caseCharging.value = newDeviceInfo?.caseCharging ?? false; firmwareVersion.value = newDeviceInfo?.firmwareVersion ?? ''; - // Logger.d(_tag, 'lxm--更新后的值 - 左耳电量: ${leftEarBattery.value}'); - // Logger.d(_tag, 'lxm--更新后的值 - 右耳电量: ${rightEarBattery.value}'); - // Logger.d(_tag, 'lxm--更新后的值 - 充电仓电量: ${caseBattery.value}'); - // Logger.d(_tag, 'lxm--更新后的值 - 左耳充电: ${leftEarCharging.value}'); - // Logger.d(_tag, 'lxm--更新后的值 - 右耳充电: ${rightEarCharging.value}'); - // Logger.d(_tag, 'lxm--更新后的值 - 充电仓充电: ${caseCharging.value}'); - // Logger.d(_tag, 'lxm--更新后的值 - 固件版本: ${firmwareVersion.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 左耳电量: ${leftEarBattery.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 右耳电量: ${rightEarBattery.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 充电仓电量: ${caseBattery.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 左耳充电: ${leftEarCharging.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 右耳充电: ${rightEarCharging.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 充电仓充电: ${caseCharging.value}'); + Logger.d(_tag, 'lxm--更新后的值 - 固件版本: ${firmwareVersion.value}'); + // rightEarCharging.refresh(); + //update(); } Worker? _deviceInfoWorker; @@ -131,7 +128,7 @@ class HomeController extends GetxController { } else { Logger.d(_tag, 'lxm--DeviceInfo为null,跳过更新'); } - update(); + //update(); }); _classicBluetoothWorker = @@ -213,7 +210,7 @@ class HomeController extends GetxController { if (_isFullyConnected.value != isNowConnected) { _isFullyConnected.value = isNowConnected; _isFullyConnected.refresh(); - update(); + //update(); if (!wasConnected && isNowConnected) { // 连接成功后等待1秒再获取设备信息 @@ -233,7 +230,7 @@ class HomeController extends GetxController { // 移除了根据连接状态控制定时器的逻辑 } - update(); + //update(); } catch (e) { Logger.e(_tag, '${'checkConnectionStatusFailed'.tr}: $e'); if (_isFullyConnected.value) { @@ -241,7 +238,7 @@ class HomeController extends GetxController { _isFullyConnected.refresh(); // 移除了发生错误时停止定时器的逻辑 // 注意:不再重置OTA检查状态,因为现在由全局服务管理 - update(); + //update(); } } } diff --git a/lib/modules/home/views/home_view.dart b/lib/modules/home/views/home_view.dart index 51cdbb387..e656f0b0c 100644 --- a/lib/modules/home/views/home_view.dart +++ b/lib/modules/home/views/home_view.dart @@ -500,17 +500,22 @@ class HomeView extends GetView { Widget _buildBatteryInfoGrid(bool isDarkMode) { return Obx(() { // 获取各部分电池电量 - final leftBattery = HomeController.leftEarBattery; - final rightBattery = HomeController.rightEarBattery; - final caseBattery = controller.caseBattery; + final leftBattery = HomeController.leftEarBattery.value; + final rightBattery = HomeController.rightEarBattery.value; + final caseBattery = controller.caseBattery.value; + // 获取充电状态 - final leftEarCharging = controller.leftEarCharging; - final rightEarCharging = controller.rightEarCharging; - final caseCharging = controller.caseCharging; + final leftEarCharging = controller.leftEarCharging.value; + final rightEarCharging = controller.rightEarCharging.value; + final caseCharging = controller.caseCharging.value; + final isConnected = controller.isFullyConnectedRx.value; + + print( + 'lxm--电池信息UI - 左耳电量: $leftBattery, 右耳电量: $rightBattery, 充电仓电量: $caseBattery, ' + '充电(L/R/C): $leftEarCharging/$rightEarCharging/$caseCharging, 已连接: $isConnected'); // 判断是否显示充电盒:充电盒电量大于0且设备已连接 - final shouldShowCase = - caseBattery.value > 0 && controller.isFullyConnectedRx.value; + final shouldShowCase = caseBattery > 0 && isConnected; // 判断是否为单端耳机 final isSingleHeadset = controller.isSingleHeadset(); @@ -529,12 +534,12 @@ class HomeView extends GetView { if (isSingleHeadset) ...[ _buildCompactBatteryItem( label: 'deviceTypeBleBluetoothHeadset'.tr, - batteryLevel: (leftBattery.value > 0 || rightBattery.value == 0) - ? leftBattery.value - : rightBattery.value, - isCharging: (leftBattery.value > 0 || rightBattery.value == 0) - ? leftEarCharging.value - : rightEarCharging.value, + batteryLevel: (leftBattery > 0 || rightBattery == 0) + ? leftBattery + : rightBattery, + isCharging: (leftBattery > 0 || rightBattery == 0) + ? leftEarCharging + : rightEarCharging, isDarkMode: isDarkMode, ), ] else ...[ @@ -542,8 +547,8 @@ class HomeView extends GetView { // 左耳机 _buildCompactBatteryItem( label: 'left'.tr, // 左 - batteryLevel: leftBattery.value, - isCharging: leftEarCharging.value, + batteryLevel: leftBattery, + isCharging: leftEarCharging, isDarkMode: isDarkMode, ), @@ -557,8 +562,8 @@ class HomeView extends GetView { // 右耳机 _buildCompactBatteryItem( label: 'right'.tr, // 右 - batteryLevel: rightBattery.value, - isCharging: rightEarCharging.value, + batteryLevel: rightBattery, + isCharging: rightEarCharging, isDarkMode: isDarkMode, ), ], @@ -575,8 +580,8 @@ class HomeView extends GetView { // 充电盒 _buildCompactBatteryItem( label: 'chargingCase'.tr, - batteryLevel: caseBattery.value, - isCharging: caseCharging.value, + batteryLevel: caseBattery, + isCharging: caseCharging, isDarkMode: isDarkMode, ), ] diff --git a/lib/modules/pairing/controllers/pairing_controller.dart b/lib/modules/pairing/controllers/pairing_controller.dart index 2015dac07..b3ff77b52 100644 --- a/lib/modules/pairing/controllers/pairing_controller.dart +++ b/lib/modules/pairing/controllers/pairing_controller.dart @@ -1043,8 +1043,14 @@ class PairingController extends GetxController with WidgetsBindingObserver { } catch (e) { Logger.e(_tag, '启动AgentService失败: $e'); } - - Get.offAllNamed(Routes.home); + //print('lxm-上一个路由: ${Get.previousRoute.toString()}'); + if (Get.previousRoute == Routes.home) { + // 如果是从home页过来的,则直接返回 + Get.back(); + } else { + // 否则,跳转到home页并清空之前的路由栈 + Get.offAllNamed(Routes.home); + } }); }