import '../constants/charge_maps.dart'; class ChargeUtils { // ============ 无线充电 ============ static String getDisplayPowerWireless(double power) { if (power == 0) return '读取中...'; const List 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; } }