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

Dart中如何累加多个卡片的TimeOfDay格式总时长

实现多卡片工作时长累加的方案

要实现所有卡片的工作时长累加,不能直接对"HH:mm"格式的字符串做拼接或数值运算,得先把每个时长转换成可计算的时间对象(Duration)或总分钟数,累加后再格式回字符串。以下是具体实现步骤:

1. 维护所有卡片的时长数据

在你的状态类中添加一个存储容器,用来记录每个卡片的时长(两种方案二选一即可):

// 方案一:用List存储每个卡片的Duration对象
List<Duration> allCardDurations = [];

// 方案二:直接维护累加的总分钟数(更节省内存)
int totalAccumulatedMinutes = 0;

2. 修改单卡片时长计算逻辑

在原有的increment方法中,计算出单个卡片的时长后,同步更新存储容器:

var format = DateFormat("HH:mm");
void increment() {
  setState(() {
    data = {
      'beginHour': result['beginHour'],
      'endHour': result['endHour'],
      // 其他字段...
    };
    
    var one = format.parse(result['beginHour']);
    var two = format.parse(result['endHour']);
    var delta = two.difference(one);
    
    // 方案一:将当前卡片的Duration加入列表
    allCardDurations.add(delta);
    
    // 方案二:直接累加总分钟数
    totalAccumulatedMinutes += delta.inMinutes;
    
    // 保留原有单卡片时长的格式化逻辑(如果需要显示单卡片时长)
    String singleCardTotal = "${delta.inHours.toString().padLeft(2, '0')}:${delta.inMinutes.remainder(60).toString().padLeft(2,'0')}";
  });
}

3. 计算并格式化总时长

写一个方法,把累加后的总时长转换成"HH:mm"格式的字符串:

对应方案一(基于List):

String getTotalWorkDuration() {
  Duration totalDuration = Duration();
  // 遍历所有卡片的时长进行累加
  for (var duration in allCardDurations) {
    totalDuration += duration;
  }
  // 格式化为HH:mm字符串
  int hours = totalDuration.inHours;
  int minutes = totalDuration.inMinutes.remainder(60);
  return "${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}";
}

对应方案二(基于总分钟数):

String getTotalWorkDuration() {
  int hours = totalAccumulatedMinutes ~/ 60;
  int minutes = totalAccumulatedMinutes % 60;
  return "${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}";
}

4. 使用总时长

在需要展示总时长的位置调用方法即可,例如:

Text("总工作时长:${getTotalWorkDuration()}")

注意事项

  • 如果卡片支持删除、编辑操作,记得同步更新allCardDurations或totalAccumulatedMinutes,保证数据一致性。
  • 使用DateFormat需要导入intl包,若未导入,需在pubspec.yaml中添加依赖:
    dependencies:
      intl: ^0.18.1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:47:07