Files
MEIZU-Battery-Healthy/lib/utils/charge_utils.dart
T

124 lines
3.7 KiB
Dart

import '../constants/charge_maps.dart';
class ChargeUtils {
// ============ 无线充电 ============
static String getDisplayPowerWireless(double power) {
if (power == 0) return '读取中...';
const List<int> levels = [5, 7, 15, 27, 40, 50, 66];
if (power < 3) return '≈${power.round()}W';
int matchedLevel = levels.firstWhere(
(level) => power <= level + 2,
orElse: () => levels.last,
);
return '≈${matchedLevel}W';
}
// ============ 旧的有线逻辑(保留兼容) ============
static String getDisplayPowerWired(
double power,
int? wiredLevel,
String chargeType,
) {
if (chargeType == "SDP") return "≈7.5W";
if (wiredLevel != null && ChargeMaps.wiredPower.containsKey(wiredLevel)) {
double p = ChargeMaps.wiredPower[wiredLevel]!;
if (p > 0) return '≈${p.toInt()}W';
}
double best = 0;
for (var entry in ChargeMaps.wiredPower.entries) {
if (entry.value <= power + 3 && entry.value > best) {
best = entry.value;
}
}
if (power == 0) return '读取中...';
return best > 0 ? '≈${best.toInt()}W' : '≈${power.round()}W';
}
// ============ 主界面:实际 / 标定(旧版) ============
static String getMainDisplayPowerWired(
double power,
int? wiredLevel,
String chargeType,
) {
if (chargeType == "SDP") return "≈7.5W";
if (power == 0) return "读取中...";
final actual = power.round();
if (wiredLevel != null && ChargeMaps.wiredPower.containsKey(wiredLevel)) {
final requested = ChargeMaps.wiredPower[wiredLevel]!.round();
return "≈${actual}W/${requested}W";
}
return "≈${actual}W";
}
// ============ 主界面:BM 电池端功率 + 标定档位 ============
/// 示例:5.98W / 7.5W、12.3W、读取中...
static String getMainDisplayPowerBm(
double bmPower,
int? wiredLevel,
String chargeType,
bool isWireless,
) {
if (bmPower <= 0 || bmPower > 100) return '读取中...';
final powerStr = '${bmPower.toStringAsFixed(1)}W';
if (isWireless || chargeType == 'SDP') return powerStr;
if (wiredLevel != null && ChargeMaps.wiredPower.containsKey(wiredLevel)) {
final requested = ChargeMaps.wiredPower[wiredLevel]!;
final requestedStr = requested == requested.roundToDouble()
? requested.toInt().toString()
: requested.toStringAsFixed(1);
return '$powerStr / ${requestedStr}W';
}
return powerStr;
}
// ============ 详情页:标定档位 ============
/// 示例:≈80W/L-10、≈7.5W/L-1
static String getDetailRequestedPowerWired(
double power,
int? wiredLevel,
String chargeType,
) {
if (chargeType == "SDP") return "≈7.5W";
if (power == 0) return "读取中...";
if (wiredLevel != null && ChargeMaps.wiredPower.containsKey(wiredLevel)) {
final requested = ChargeMaps.wiredPower[wiredLevel]!;
final str = requested == requested.roundToDouble()
? requested.toInt().toString()
: requested.toStringAsFixed(1);
return "≈${str}W/L-$wiredLevel";
}
return "≈${power.round()}W";
}
// ============ 详情页:实际功率 ============
static String getDetailActualPowerWired(double power, String chargeType) {
if (chargeType == "SDP") return "≈7.5W";
if (power == 0) return "读取中...";
return "≈${power.round()}W";
}
// ============ 充电类型标签 ============
static String getChargeTypeLabel(bool isWireless, String chargeType) {
if (isWireless) {
return chargeType == "无线" ? "无线" : chargeType;
}
if (chargeType.isEmpty) {
return "识别中...";
}
if (chargeType == 'PPS') return 'PPS';
if (chargeType == 'SDP') return 'USB';
return chargeType;
}
}