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
相关产品推荐
相关产品推荐

