From c7dafc5c9616cb64039e52e5090a7737dbab06b4 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Mon, 18 Aug 2025 18:06:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=E6=B7=BB=E5=8A=A0=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E6=9C=8D=E5=8A=A1=E9=94=99=E8=AF=AF=E6=97=B6=E7=9A=84?= =?UTF-8?q?snackbar=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(home): 添加电池信息定时刷新功能 在agent_controller中添加错误时的snackbar提示,提升用户体验 在home_controller中实现电池信息定时刷新功能,每2秒检查一次电池状态 --- .../agent/controllers/agent_controller.dart | 2 + .../home/controllers/home_controller.dart | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/lib/modules/agent/controllers/agent_controller.dart b/lib/modules/agent/controllers/agent_controller.dart index ba319a5d0..8d4f67654 100644 --- a/lib/modules/agent/controllers/agent_controller.dart +++ b/lib/modules/agent/controllers/agent_controller.dart @@ -664,6 +664,8 @@ class AgentController extends GetxController { // messages.refresh(); } + Get.snackbar('error'.tr, '${event.data['message']}'); + Logger.e(TAG, '代理服务错误: ${event.data['message']}'); break; diff --git a/lib/modules/home/controllers/home_controller.dart b/lib/modules/home/controllers/home_controller.dart index 902ceb58d..18252c4cd 100644 --- a/lib/modules/home/controllers/home_controller.dart +++ b/lib/modules/home/controllers/home_controller.dart @@ -23,6 +23,11 @@ class HomeController extends GetxController { final _isFullyConnected = false.obs; String? _lastConnectedDeviceName; + // 添加电池信息定时刷新相关变量 + Timer? _batteryRefreshTimer; + static const Duration _batteryRefreshInterval = + Duration(seconds: 2); // 2秒刷新一次 + bool get isFullyConnected => _isFullyConnected.value; RxBool get isFullyConnectedRx => _isFullyConnected; BluetoothDevice? get currentDevice => _bluetoothManager.currentDevice; @@ -58,6 +63,7 @@ class HomeController extends GetxController { void onInit() { super.onInit(); _initWithCachedInfo(); + _startBatteryRefreshTimer(); // 启动电池信息定时刷新 } @override @@ -65,6 +71,7 @@ class HomeController extends GetxController { _deviceInfoWorker?.dispose(); _classicBluetoothWorker?.dispose(); _bleConnectionWorker?.dispose(); + _stopBatteryRefreshTimer(); // 停止定时器 super.onClose(); } @@ -260,4 +267,49 @@ class HomeController extends GetxController { ? deviceInfo.value!.firmwareVersion : 'unknown'.tr; } + + /// 启动电池信息定时刷新 + void _startBatteryRefreshTimer() { + _stopBatteryRefreshTimer(); // 先停止现有定时器 + + _batteryRefreshTimer = Timer.periodic(_batteryRefreshInterval, (timer) { + // 只有在设备完全连接时才刷新电池信息 + if (_isFullyConnected.value) { + _refreshBatteryInfo(); + } + }); + + Logger.d(_tag, '电池信息定时刷新已启动,间隔: ${_batteryRefreshInterval.inSeconds}秒'); + } + + /// 停止电池信息定时刷新 + void _stopBatteryRefreshTimer() { + if (_batteryRefreshTimer != null) { + _batteryRefreshTimer!.cancel(); + _batteryRefreshTimer = null; + Logger.d(_tag, '电池信息定时刷新已停止'); + } + } + + /// 刷新电池信息 + Future _refreshBatteryInfo() async { + try { + if (!_isFullyConnected.value) { + return; + } + + Logger.d(_tag, '开始刷新电池信息...'); + + // 通过BLE管理器获取最新的电池信息 + final success = await _bleManager.fetchBatteryInfo(); + + if (success) { + Logger.d(_tag, '电池信息刷新请求发送成功'); + } else { + Logger.w(_tag, '电池信息刷新请求发送失败'); + } + } catch (e) { + Logger.e(_tag, '刷新电池信息时发生错误: $e'); + } + } }