Browse Source

fix(pairing): 修复从home页返回时的路由逻辑

refactor(home): 优化电池信息显示逻辑,移除不必要的.value访问
修复电池信息更新逻辑,移除条件判断直接更新值
启用调试日志帮助排查电池信息问题
weicu
lxm 1 year ago
parent
commit
19406d17fa
  1. 53
      lib/modules/home/controllers/home_controller.dart
  2. 45
      lib/modules/home/views/home_view.dart
  3. 10
      lib/modules/pairing/controllers/pairing_controller.dart

53
lib/modules/home/controllers/home_controller.dart

@ -42,51 +42,48 @@ class HomeController extends GetxController {
BluetoothDevice? get currentDevice => _bluetoothManager.currentDevice;
Rx<DeviceInfo?> 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();
}
}
}

45
lib/modules/home/views/home_view.dart

@ -500,17 +500,22 @@ class HomeView extends GetView<HomeController> {
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<HomeController> {
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<HomeController> {
// 左耳机
_buildCompactBatteryItem(
label: 'left'.tr, // 左
batteryLevel: leftBattery.value,
isCharging: leftEarCharging.value,
batteryLevel: leftBattery,
isCharging: leftEarCharging,
isDarkMode: isDarkMode,
),
@ -557,8 +562,8 @@ class HomeView extends GetView<HomeController> {
// 右耳机
_buildCompactBatteryItem(
label: 'right'.tr, // 右
batteryLevel: rightBattery.value,
isCharging: rightEarCharging.value,
batteryLevel: rightBattery,
isCharging: rightEarCharging,
isDarkMode: isDarkMode,
),
],
@ -575,8 +580,8 @@ class HomeView extends GetView<HomeController> {
// 充电盒
_buildCompactBatteryItem(
label: 'chargingCase'.tr,
batteryLevel: caseBattery.value,
isCharging: caseCharging.value,
batteryLevel: caseBattery,
isCharging: caseCharging,
isDarkMode: isDarkMode,
),
]

10
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);
}
});
}

Loading…
Cancel
Save