1.9.0-BatteryManager电池充电状态信息引入完成
This commit is contained in:
@@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
|
||||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
import '../theme/theme_service.dart';
|
||||
import '../theme/app_colors.dart';
|
||||
import '../services/battery_manager_service.dart';
|
||||
|
||||
// --- 本地导入 ---
|
||||
import '../models/device_matching.dart';
|
||||
@@ -64,6 +65,9 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
int? _wiredLevel;
|
||||
bool _isWireless = false;
|
||||
DateTime? _chargingStartTime;
|
||||
double _bmPower = 0.0;
|
||||
double _bmVolt = 0.0;
|
||||
double _bmCurr = 0.0;
|
||||
|
||||
// ---------- SAF 状态 ----------
|
||||
final SafStorageService _safService = SafStorageService();
|
||||
@@ -80,6 +84,7 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
|
||||
// 轮询定时器(15秒)
|
||||
Timer? _pollTimer;
|
||||
Timer? _bmTimer;
|
||||
|
||||
// ---------- 生命周期 ----------
|
||||
@override
|
||||
@@ -124,7 +129,7 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
readBatteryCapacity();
|
||||
}
|
||||
});
|
||||
|
||||
_startBmPolling(); // ← 调用,不是定义
|
||||
dev.log('🔵 ========== initState 结束 ==========', name: 'BatteryHealth');
|
||||
}
|
||||
|
||||
@@ -132,6 +137,7 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
void dispose() {
|
||||
_chargeEventSubscription?.cancel();
|
||||
_pollTimer?.cancel();
|
||||
_bmTimer?.cancel();
|
||||
_dbService.database.then((db) => db.close()).ignore();
|
||||
super.dispose();
|
||||
}
|
||||
@@ -252,6 +258,9 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
_chargeCurr = 0.0;
|
||||
_wiredLevel = null;
|
||||
_chargingStartTime = null;
|
||||
_bmPower = 0.0; // 🆕
|
||||
_bmVolt = 0.0; // 🆕
|
||||
_bmCurr = 0.0; // 🆕
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -610,18 +619,34 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- BM 轮询(1秒) ----------
|
||||
void _startBmPolling() {
|
||||
_bmTimer?.cancel();
|
||||
_bmTimer = Timer.periodic(const Duration(seconds: 1), (_) async {
|
||||
if (!_isCharging) return;
|
||||
try {
|
||||
final d = await BatteryManagerService.fetch();
|
||||
if (!mounted) return;
|
||||
setState(() {
|
||||
_bmPower = d.powerW;
|
||||
_bmVolt = d.voltageV;
|
||||
_bmCurr = d.currentA;
|
||||
});
|
||||
} catch (e) {
|
||||
// 静默降级,保留上一次的值
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ---------- 显示辅助 ----------
|
||||
String _getDisplayPower() {
|
||||
if (!_isCharging) return '';
|
||||
if (_isWireless) {
|
||||
return ChargeUtils.getDisplayPowerWireless(_chargePower);
|
||||
} else {
|
||||
return ChargeUtils.getMainDisplayPowerWired(
|
||||
_chargePower,
|
||||
_wiredLevel,
|
||||
_chargeType,
|
||||
);
|
||||
}
|
||||
return ChargeUtils.getMainDisplayPowerBm(
|
||||
_bmPower,
|
||||
_wiredLevel,
|
||||
_chargeType,
|
||||
_isWireless,
|
||||
);
|
||||
}
|
||||
|
||||
String _getChargeTypeLabel() {
|
||||
@@ -820,6 +845,9 @@ class _BatteryHealthPageState extends State<BatteryHealthPage> {
|
||||
volt: _chargeVolt,
|
||||
curr: _chargeCurr,
|
||||
wiredLevel: _wiredLevel,
|
||||
bmPower: _bmPower, // 🆕
|
||||
bmVolt: _bmVolt, // 🆕
|
||||
bmCurr: _bmCurr, // 🆕
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user