Flutter空安全升级后TypeError:int无法转为List<int>求助
解决Flutter空安全升级后的List类型转换错误
首先,你尝试的chosenAnswers = numberOfQuestions as List<int>完全错误——numberOfQuestions是整数类型,不可能强转为List<int>,这必然触发类型转换错误,直接放弃这种写法。
原代码chosenAnswers = List<int>(numberOfQuestions)在空安全环境下的问题在于:
空安全生效后,List<int>要求列表中的每个元素必须是非空的int值,但List<int>(length)这种旧写法会创建一个固定长度的列表,元素默认初始化为null,这和List<int>的非空约束冲突,进而引发类型错误。
正确的初始化方式
根据你的需求(存储对应题目的选择答案),可以用以下两种方式初始化列表:
- 固定默认值初始化:如果需要给每个位置设置一个默认值(比如用
-1表示未选择答案),用filled方法:chosenAnswers = List<int>.filled(numberOfQuestions, -1); - 动态生成初始化:如果需要根据索引生成初始值,用
generate方法:chosenAnswers = List<int>.generate(numberOfQuestions, (index) => 0);
额外检查点
- 确认
chosenAnswers的变量类型声明正确,必须是List<int>而非int或其他类型:// 正确的类型声明 List<int> chosenAnswers = []; - 确保
numberOfQuestions已经完成空安全检查,是一个非空的int值,避免因null导致的初始化失败。
内容的提问来源于stack exchange,提问作者Adeyeye Adedamola
相关产品推荐
相关产品推荐

