Flutter报错_CompactLinkedHashSet不是List<Question>子类型转换错误如何解决
错误原因
错误核心是不合法的类型强转操作,Dart中Set和List是完全独立的集合类型,无法直接强制转换:
- 你声明
questionBank时变量类型指定为List<Question>,但实际赋值时使用大括号{}包裹元素,Dart中无键值对的{}结构默认会被识别为Set类型 - 后续追加的
as List<Question>强转语句不合法,直接触发了_CastError类型转换异常
修复方案
仅需要修改questionBank的定义语句:将包裹元素的大括号{}替换为List专用的方括号[],同时删除多余的强制类型转换代码即可,修改后代码如下:
List<Question> questionBank = [ Question(q: 'Moon Color is gray',a:false), Question(q: 'Independence Day of pakistan was 1947',a:true), Question(q: 'Tesla was the owner of Starlink company',a:false), ];
额外优化提示:当前代码在答完所有题目后继续点击按钮会触发数组下标越界崩溃,可在每次自增
questionNumber前增加questionNumber < questionBank.length - 1的判断逻辑,避免越界问题。
内容的提问来源于stack exchange,提问作者Noman Hassan
相关产品推荐
相关产品推荐

