我有一个包含银行数据的 map 列表,现在创建图表需要键和值.

void main() {
    List<Map<String, dynamic>> maplist = [
        {
            'Bank': 'HDFC',
            'Balance': 10900.00,
            'Transactions': []
        },
        {
            'Bank': 'AXIS',
            'Balance': 5900.00,
            'Transactions': []
        },
        {
            'Bank': 'UCO',
            'Balance': 4200.00,
            'Transactions': []
        },
        {
            'Bank': 'ICICI',
            'Balance': 2300.00,
            'Transactions': []
        },
        {
            'Bank': 'KOTAK',
            'Balance': 1200.00,
            'Transactions': []
        },
    ];
    Map<String, double> chartData = {};
}

我想要以下chartData分的结果

{
  'HDFC':10900, 'AXIS':5900,'UCO':4200,'OTHERS':3500}
}

它应该取前3个银行,第四个关键字OTHERS应该是所有其他银行余额的当前总和.

推荐答案

你没有提到当Maplist长度小于4时应该怎么做……

在这里我已经创建了代码,包括对长度的条件..如果长度小于3..其他不计算...

Map<String, dynamic> getChartData(List<Map<String, dynamic>> maplist) {
  Map<String, double> chartData = {};

  if (maplist.length > 3) {
    for (int x = 0; x < 3; x++) {
      chartData[maplist[x]['Bank']] = maplist[x]['Balance'];
    }
    //for calculating sum of all OTHER account
    chartData['Others'] = maplist.sublist(3).fold(
        0, (previousValue, element) => previousValue + element["Balance"]);
  } else {
    //when key value pair are less than three...no calculation for OTHER
    for (int x = 0; x < maplist.length; x++) {
      chartData[maplist[x]['Bank']] = maplist[x]['Balance'];
    }
  }
  return chartData;
}

void main() {
  List<Map<String, dynamic>> maplist = [
    {'Bank': 'HDFC', 'Balance': 10900.00, 'Transactions': []},
    {'Bank': 'AXIS', 'Balance': 5900.00, 'Transactions': []},
    {'Bank': 'UCO', 'Balance': 4200.00, 'Transactions': []},
    {'Bank': 'ICICI', 'Balance': 2300.00, 'Transactions': []},
    {'Bank': 'KOTAK', 'Balance': 1200.00, 'Transactions': []},
  ];

  print(getChartData(maplist));
}

我已经判断了这个代码...按照你想要的方式工作...

Flutter相关问答推荐

如何使用新的Riverpod语法将依赖传递给AsyncNotifier?

使用自定义控制器将项插入到ListView中时行为不正确

FCM通知显示两次通知(&A)

Flutter 翼doctor 显示的错误,我似乎不能修复.问题:系统32、Android工具链、Windows 10 SDK

什么是dart :这只是dart ?

如何正确处理Flutter 翼中使用火基时发生的碰撞?

如何确定Flutter 中的文本 colored颜色 ?

如何在 VS Code 中启用 Flutter 运行/调试工具栏?

运行任何 flutter 命令都会显示无法安装 <版本>

不使用 GlobalKey 仍然收到 GlobalKey 被多次使用的错误

Flutter 3.10 - 'window' 已弃用,不应使用

使用 riverpod 提供 GoRouter 实例的正确方法是什么?

如何与 PostgreSQL 和外部网站交互 flutter apk?

Listview 如何转到下一行/新行?

更改文本字段Flutter 中最大字母的 colored颜色

如何修复int类型不是String类型的子类型

Flutter 在气泡聊天消息上对齐时间戳文本

Flutter 用户过滤器

如何从我的Flutter 项目中删除错误?

我想将我的模型类对象发送到下一个屏幕之前我这样做首先我在第二个屏幕中声明对象