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

Dart中如何将Map对象添加到嵌套Map内部的List列表中

Dart实现方案

方案1:直接修改原Map对象(常用最简写法)

直接获取products对应的列表,调用add方法插入新Map即可,建议增加类型校验避免运行时异常:

void main() {
  // 原有Map对象
  var _map = {
    'category': 'Africa', 
    'products': [
      {
        'countryName': 'Namibia', 
        'population': 1800000, 
        'capital': 'Windhoek', 
      }, 
      {
        'countryName': 'Kenya', 
        'population': 20000000, 
        'capital': 'Nairobi', 
      }, 
    ]
  };

  // 待新增的Map对象
  var _newMap = {
    'countryName': 'Rwanda', 
    'population': 3000000, 
    'capital': 'Kigali', 
  };

  // 核心插入逻辑
  if (_map['products'] is List) {
    (_map['products'] as List).add(_newMap);
  }

  // 可打印验证结果
  print(_map);
}

如果是强类型开发场景,提前给Map指定类型可以省略强制转换步骤,写法更简洁:

// 提前指定类型的原有Map
Map<String, dynamic> _map = {
  'category': 'Africa',
  'products': <Map<String, dynamic>>[
    {
      'countryName': 'Namibia',
      'population': 1800000,
      'capital': 'Windhoek',
    },
    {
      'countryName': 'Kenya',
      'population': 20000000,
      'capital': 'Nairobi',
    },
  ]
};

// 无需强转直接插入
_map['products'].add(_newMap);

方案2:不修改原Map,生成新的Map对象

如果需要保留原始数据不被改动,可以用展开运算符拷贝生成新对象:

var newResultMap = {
  ..._map,
  'products': [
    ..._map['products'] as List,
    _newMap,
  ]
};

该写法不会改动原有_map的内容,适合需要保留原始数据的业务场景。

两种方案运行后得到的结构都和要求的最终结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:39:02