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

Flutter NoSuchMethodError:List<Category>无entries getter问题求解

错误根因

异常确实出在selectedCategories getter实现中:

  • 你定义的categories getter最终调用了.toList(),返回值是List<Category>类型,而.entries是Map类型才有的属性,List不存在这个getter,你在selectedCategories里对List类型的categories返回值调用.entries,直接触发了本次抛出的No Such Method Error。
  • 另外你的toggle方法存在语法错误:取反表达式的括号不匹配,!(_categories[item]?? true}处混用了小括号和大括号,会直接导致编译失败。
修复代码

只需要修正getter的调用逻辑、补全语法错误即可,UI层代码无需改动:

// 修正toggle方法的语法错误
void toggle(Category item){
  _categories[item] = !(_categories[item] ?? true);
  print(_categories[item]);
}

// 全部分类列表getter,原逻辑无需改动
get categories => _categories.entries.map((e) => e.key).toList();

// 已选分类getter:直接从存储键值对的_categories(RxMap类型)做筛选,不要调用返回List类型的categories getter
get selectedCategories => _categories.entries
    .where((element) => element.value)
    .map((e) => e.key)
    .toList();

补充注意:当前Category类作为Map的key使用时,没有重写==操作符和hashCode,如果后续传入新建的同name、同color的Category实例,会被判定为和Map中存储的key不相等,导致选中状态切换失效,如有需要请补全Category类的相等性判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 17:06:29