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

Flutter中向Map添加值时未获预期输出的问题排查

问题原因

你每次循环调用_body.addAll()时,都在重复给'receiver_details'这个键赋值全新的Map对象。由于Map的键具有唯一性,每次循环都会覆盖掉之前'receiver_details'对应的整个Map,最终只会保留最后一次循环生成的内容。

修复方案

先确保'receiver_details'对应的子Map存在,之后每次循环直接向这个子Map里添加新的键值对,而非替换整个'receiver_details':

// 先初始化receiver_details为空Map(如果尚未存在)
_body['receiver_details'] ??= {};

for (var i = 0; i < n; i++) {
  // 直接向receiver_details子Map添加元素
  (_body['receiver_details'] as Map)[('[$i]')] = {
    "receiver_name": receiver_name,
  };
}

也可以用putIfAbsent简化逻辑,确保子Map存在:

for (var i = 0; i < n; i++) {
  // 若receiver_details不存在则创建空Map,返回该Map对象
  var receiverSubMap = _body.putIfAbsent('receiver_details', () => {});
  receiverSubMap[('[$i]')] = {
    "receiver_name": receiver_name,
  };
}
预期输出验证

修复后,_body的结构会符合你的预期:

{
  receiver_details: {
    [0]: {receiver_name: abc},
    [1]: {receiver_name: vhhh}
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:15:43