You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:如何用Switch Case替代Future<double>方法的If-Else并简化代码?

问题解决与分析

1. 用switch case替换if-else分支

Dart的switch仅支持离散值判断,因此我们可以先将pendingHours转换为对应的整数步长,再用switch处理:

static Future<double> getMiningLeftHoursProgress(hours) async {
  double miningProgressValue = 0.0;

  String strDigits(int n) => n.toString().padLeft(2, '0');
  double pendingHours = 24.0 - double.parse(strDigits(hours));
  
  // 将区间转换为0-9的整数步长
  int step = (pendingHours / 2.4).floor();
  // 限制步长范围,避免超出区间
  step = step.clamp(0, 9);

  switch (step) {
    case 0:
      miningProgressValue = 0.1;
      break;
    case 1:
      miningProgressValue = 0.2;
      break;
    case 2:
      miningProgressValue = 0.3;
      break;
    case 3:
      miningProgressValue = 0.4;
      break;
    case 4:
      miningProgressValue = 0.5;
      break;
    case 5:
      miningProgressValue = 0.6;
      break;
    case 6:
      miningProgressValue = 0.7;
      break;
    case 7:
      miningProgressValue = 0.8;
      break;
    case 8:
      miningProgressValue = 0.9;
      break;
    case 9:
      miningProgressValue = 1.0;
      break;
  }

  return miningProgressValue;
}

2. if-else与switch case的适用场景及优劣对比

if-else

  • 适用场景:处理范围判断、多条件组合判断(如x > 5 && y < 10)、非离散值逻辑;
  • 优势:逻辑灵活,能覆盖所有复杂判断场景;
  • 劣势:多层嵌套时可读性差,条件分支较多时,需要逐个判断,效率略低。

switch case

  • 适用场景:单一变量的离散值判断(整数、枚举、字符串等固定值);
  • 优势:结构清晰,分支一目了然,编译器可针对性优化执行效率;
  • 劣势:无法直接处理范围或多条件组合,必须先将判断逻辑转换为离散值,分支值必须是常量。

3. 简化固定区间判断的代码

由于区间是固定步长(2.4递增),对应值也是固定步长(0.1递增),可以直接通过数学计算替代所有分支判断,代码大幅简化:

static Future<double> getMiningLeftHoursProgress(hours) async {
  String strDigits(int n) => n.toString().padLeft(2, '0');
  double pendingHours = 24.0 - double.parse(strDigits(hours));
  
  // 计算步长并限制范围,直接推导对应值
  int step = (pendingHours / 2.4).floor().clamp(0, 9);
  return 0.1 * (step + 1);
}

说明:

  • (pendingHours / 2.4).floor()将区间转换为0-9的整数步长,对应原代码的10个区间;
  • clamp(0,9)确保步长不会超出有效范围(比如pendingHours为24时,计算得10,被限制为9);
  • 最终值通过0.1*(step+1)直接计算,完全匹配原分支的赋值逻辑。

内容的提问来源于stack exchange,提问作者wolfsoft Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:25:30