Flutter访问列表options报_ImmutableMap无对应getter如何解决
报错原因
你虽然定义了Question类,但quiz列表里存储的元素是Map类型的字面量,不是Question类的实例,Dart中Map类型没有options getter属性,只能通过['键名']的方式读取对应值,所以调用.options时触发了报错。
解决方法
有两种可选方案:
方案1:直接适配现有Map类型的quiz(临时快速解决)
不需要修改question.dart,直接修改main.dart里的取值代码即可:
把
final newoptions = quiz[1].options;
改为
final newoptions = quiz[1]['options'] as String;
注意:这种方案没有类型校验,写错键名或者类型不匹配时会在运行时报错。
方案2:将quiz改为存储Question实例(推荐规范写法)
修改question.dart里的quiz定义,直接使用你声明的Question类构造实例,符合类型安全要求:
// 明确指定列表元素类型为Question const List<Question> quiz = [ Question(id: 1, options: 'hello'), Question(id: 2, options: 'good'), Question(id: 3, options: 'abc'), ];
修改完成后你原来写的final newoptions = quiz[1].options就可以正常运行,IDE也会有对应的属性提示,避免写错属性名。
内容的提问来源于stack exchange,提问作者jiji
相关产品推荐
相关产品推荐

