启用空安全时默认List构造函数不可用报错该如何解决?
报错原因
Dart 2.12及以上版本开启空安全后,默认的List()构造器已被官方废弃,该构造器默认会生成填充null元素的列表,不符合空安全的类型校验规则,因此编译时会抛出该错误。
相关报错截图:

解决方案
根据你的实际使用场景选择对应替换写法即可:
- 场景1:创建空的可增长列表(你实现YouTube频道视频导入功能,大概率是该场景,用来存储拉取到的视频数据)
原错误写法示例:
直接替换为字面量写法即可:List<Video> videoList = List();
也可使用官方标准构造器写法:List<Video> videoList = [];List<Video> videoList = List.empty(growable: true); - 场景2:创建固定长度的列表
原错误写法示例:
替换为// 要创建长度为10的int类型列表 List<int> countList = List(10);List.filled写法,第二个参数传入对应类型的默认填充值:// 非空类型填入对应类型的默认值 List<int> countList = List.filled(10, 0); // 可空类型可以传入null作为填充值 List<int?> nullableCountList = List.filled(10, null); - 场景3:按自定义规则生成指定长度的列表
使用List.generate方法:// 生成长度为5,元素值为索引2倍的列表 List<int> numList = List.generate(5, (index) => index * 2);
内容的提问来源于stack exchange,提问作者Pimpi Rimpà
相关产品推荐
相关产品推荐

