|
|
@ -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'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|