1.9.0-BatteryManager电池充电状态信息引入完成
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
/// BatteryManager 实时数据(电池端:电压 / 电流 / 功率)
|
||||
class BatteryManagerData {
|
||||
final int voltageMv;
|
||||
final int currentUa;
|
||||
final double powerW;
|
||||
final double temperatureC;
|
||||
final int plugged; // 0=未插, 1=AC, 2=USB, 4=WIRELESS
|
||||
final bool isCharging;
|
||||
|
||||
const BatteryManagerData({
|
||||
required this.voltageMv,
|
||||
required this.currentUa,
|
||||
required this.powerW,
|
||||
required this.temperatureC,
|
||||
required this.plugged,
|
||||
required this.isCharging,
|
||||
});
|
||||
|
||||
factory BatteryManagerData.empty() => const BatteryManagerData(
|
||||
voltageMv: 0,
|
||||
currentUa: 0,
|
||||
powerW: 0,
|
||||
temperatureC: 0,
|
||||
plugged: 0,
|
||||
isCharging: false,
|
||||
);
|
||||
|
||||
factory BatteryManagerData.fromMap(dynamic raw) {
|
||||
if (raw is! Map) return BatteryManagerData.empty();
|
||||
return BatteryManagerData(
|
||||
voltageMv: (raw['voltageMv'] as num?)?.toInt() ?? 0,
|
||||
currentUa: (raw['currentUa'] as num?)?.toInt() ?? 0,
|
||||
powerW: (raw['powerW'] as num?)?.toDouble() ?? 0.0,
|
||||
temperatureC: (raw['temperatureC'] as num?)?.toDouble() ?? 0.0,
|
||||
plugged: (raw['plugged'] as num?)?.toInt() ?? 0,
|
||||
isCharging: raw['isCharging'] as bool? ?? false,
|
||||
);
|
||||
}
|
||||
|
||||
/// 电压 V
|
||||
double get voltageV => voltageMv / 1000.0;
|
||||
|
||||
/// 电流 A
|
||||
double get currentA => currentUa / 1_000_000.0;
|
||||
}
|
||||
|
||||
class BatteryManagerService {
|
||||
static const _channel = MethodChannel('com.lxh.battery_health/charge');
|
||||
|
||||
/// 主动拉取一次
|
||||
static Future<BatteryManagerData> fetch() async {
|
||||
final result = await _channel.invokeMethod('getBatteryManagerData');
|
||||
return BatteryManagerData.fromMap(result);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user