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

Flutter筛选列表时出现Class 'int' has no instance getter 'id'错误求助

问题原因与解决方案

问题根源

你代码里的listsearch列表存储的是纯整数类型的ID值(比如打印出的[695, 523, 908,...]),但在筛选时错误地尝试调用product.id——整数类型本身并没有id这个属性,这就是报错的直接原因。

修复方案

方案1:直接对比ID值(适配当前代码逻辑)

因为listsearch里每个元素就是ID本身,直接拿元素和目标ID对比即可,注意类型要匹配:

// 推荐:把目标ID转为int类型对比(和你的ID类型一致)
final _filteredList = listsearch.where((id) => id == 1202).toList();

// 备选:如果需要用字符串对比,将ID转为字符串
final _filteredList = listsearch.where((id) => id.toString() == '1202').toList();

方案2:存储完整数据(适合后续扩展)

如果之后需要处理产品的其他字段(比如名称、详情等),可以修改数据存储逻辑,把API返回的完整对象存入列表:

// 修改Searchgetdata中的循环逻辑
for (int i = 0; i < jsonList.length; i++) {
  listsearch.add(jsonList[i]); // 存入整个JSON对象,而非仅id字段
}

// 此时筛选可以通过键名访问id字段
final _filteredList = listsearch.where((product) => product['id'] == 1202).toList();

额外提示

  • 建议给listsearch指定类型,避免类型混淆,比如List<int> listsearch = [](方案1)或List<Map<String, dynamic>> listsearch = [](方案2)。
  • 异步数据加载时,建议判断列表是否为空再进行筛选,避免空列表处理问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:05:42