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

Flutter中如何计算Map排除Month键外所有值的总和

Flutter遍历Map排除指定键求和实现方法

核心修改逻辑:

  • 替换原有硬编码累加单个Provisional字段的逻辑,遍历每个月份对应Map的全部键值对,跳过键为Month的条目,将剩余所有int类型的支出值累加即可
  • 修正示例数据里0250的写法:Dart中整数前加前导0会被识别为八进制数值,0250实际解析值为168,和预期的250不符,直接写十进制250即可
  • 原代码里对int值做toString()再int.parse()属于多余操作,Map里存的本身就是int类型,直接取值累加即可

修改后的完整可运行代码:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  MyApp({super.key});

  final List<Map<String, int>> mylist = [
    {
      'Month': 1,
      'Provisional': 4500,
      'Teaexp': 980,
      'Lightbill': 1240,
      'Assets': 399,
    },
    {
      'Month': 2,
      'Provisional': 250,
      'Teaexp': 150,
      'Lightbill': 240,
      'Assets': 30,
    }
  ];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            children: List.generate(mylist.length, (index) {
              int sum = 0;
              // 遍历当前月份所有收支项
              mylist[index].forEach((key, value) {
                // 排除月份字段,其余值累加
                if (key != 'Month') {
                  sum += value;
                }
              });

              return ListTile(
                leading: CircleAvatar(
                  child: Text(mylist[index]['Month'].toString()),
                ),
                title: Text(sum.toString()),
              );
            }),
          ),
        ),
      ),
    );
  }
}

实现效果说明:

  • 1月总支出计算结果:4500+980+1240+399 = 7119
  • 2月总支出计算结果:250+150+240+30 = 670
  • 后续如果新增其他支出字段(比如餐饮、交通类的键值对),不需要修改求和逻辑,会自动纳入总金额计算,和你给出的单月示例{'Month':1,'Lightbill':305,'Provisional':503}计算得到总支出808的逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:54:06