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

从JSON创建Contact对象异常:列表填充失败问题排查

问题原因及解决方法

错误核心

Dart的map方法是惰性求值的——它不会立即执行你传入的回调函数,而是返回一个待执行的Iterable对象。只有当你主动遍历这个Iterable(比如调用toList()、forEach(),或者用循环迭代)时,回调里的逻辑才会真正运行。你当前的代码仅调用了map但未触发遍历,导致contacts.add()完全没执行,最终列表为空。

修复方案

方案1:用forEach替代map(适合仅执行操作、无需返回新集合的场景)

直接遍历列表并执行添加操作,forEach会立即触发回调:

List<Contact> contacts = [];
contactsJson.forEach((contact) => contacts.add(Contact.fromJson(contact)));

方案2:用map生成新列表并赋值(更简洁的函数式写法)

利用map转换每个JSON对象为Contact,再通过toList()触发遍历并生成最终列表,无需提前初始化空列表:

List<Contact> contacts = contactsJson.map((contact) => Contact.fromJson(contact)).toList();

方案3:强制遍历map的返回结果(不推荐,可读性差)

如果一定要用map,可以通过toList()强制触发遍历,但这种写法冗余,不如前两种直观:

contactsJson.map((contact) => contacts.add(Contact.fromJson(contact))).toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:32:21