Browse Source

feat(agent): 添加代理服务错误时的snackbar提示

feat(home): 添加电池信息定时刷新功能

在agent_controller中添加错误时的snackbar提示,提升用户体验
在home_controller中实现电池信息定时刷新功能,每2秒检查一次电池状态
newdev_shunjiawei
lxm 1 year ago
parent
commit
06c1e6db7c
  1. 2
      lib/modules/agent/controllers/agent_controller.dart
  2. 52
      lib/modules/home/controllers/home_controller.dart

2
lib/modules/agent/controllers/agent_controller.dart

@ -664,6 +664,8 @@ class AgentController extends GetxController {
// messages.refresh(); // messages.refresh();
} }
Get.snackbar('error'.tr, '${event.data['message']}');
Logger.e(TAG, '代理服务错误: ${event.data['message']}'); Logger.e(TAG, '代理服务错误: ${event.data['message']}');
break; break;

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

@ -23,6 +23,11 @@ class HomeController extends GetxController {
final _isFullyConnected = false.obs; final _isFullyConnected = false.obs;
String? _lastConnectedDeviceName; String? _lastConnectedDeviceName;
// 添加电池信息定时刷新相关变量
Timer? _batteryRefreshTimer;
static const Duration _batteryRefreshInterval =
Duration(seconds: 2); // 2秒刷新一次
bool get isFullyConnected => _isFullyConnected.value; bool get isFullyConnected => _isFullyConnected.value;
RxBool get isFullyConnectedRx => _isFullyConnected; RxBool get isFullyConnectedRx => _isFullyConnected;
BluetoothDevice? get currentDevice => _bluetoothManager.currentDevice; BluetoothDevice? get currentDevice => _bluetoothManager.currentDevice;
@ -58,6 +63,7 @@ class HomeController extends GetxController {
void onInit() { void onInit() {
super.onInit(); super.onInit();
_initWithCachedInfo(); _initWithCachedInfo();
_startBatteryRefreshTimer(); // 启动电池信息定时刷新
} }
@override @override
@ -65,6 +71,7 @@ class HomeController extends GetxController {
_deviceInfoWorker?.dispose(); _deviceInfoWorker?.dispose();
_classicBluetoothWorker?.dispose(); _classicBluetoothWorker?.dispose();
_bleConnectionWorker?.dispose(); _bleConnectionWorker?.dispose();
_stopBatteryRefreshTimer(); // 停止定时器
super.onClose(); super.onClose();
} }
@ -260,4 +267,49 @@ class HomeController extends GetxController {
? deviceInfo.value!.firmwareVersion ? deviceInfo.value!.firmwareVersion
: 'unknown'.tr; : '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<void> _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');
}
}
} }

Loading…
Cancel
Save