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 fetch() async { final result = await _channel.invokeMethod('getBatteryManagerData'); return BatteryManagerData.fromMap(result); } }