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

Flutter中如何从JSON列表过滤ID并存储至新列表?

解决从资质信息列表提取ID到新列表的问题

你当前的代码无法实现需求的原因是误用了where方法:where的作用是过滤出符合条件的原列表元素,而你需要的是提取每个元素的id字段并生成新的整数列表,这应该使用map方法来完成映射转换。

正确实现代码

根据你的数据结构,分两种场景给出解决方案:

场景1:使用自定义Model类(如Eligibility)

如果widget.eligibility是自定义Model类的列表(每个实例包含id属性):

List<int> eligibilityIds = [];
setState(() {
  eligibilityIds = widget.eligibility.map((element) => element.id as int).toList();
});
print(eligibilityIds); // 输出: [13, 14, 15]

场景2:直接处理Map类型列表

如果widget.eligibility是未解析的Map列表(直接从JSON转换而来):

List<int> eligibilityIds = [];
setState(() {
  eligibilityIds = widget.eligibility.map((item) => item['id'] as int).toList();
});
print(eligibilityIds); // 输出: [13, 14, 15]

错误代码分析

你原代码中的widget.eligibility.where((element) => element.id)会把element.id当作布尔判断条件(非0的id会被视为true),最终返回的是原列表中所有id非0的元素,而非id值的列表,类型与List<int>不匹配,因此无法实现需求。

内容的提问来源于stack exchange,提问作者Md. Mustafizur Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:57:11