Dart/Flutter启用空安全后无法使用默认List构造器如何修复?
报错信息:The default 'List' constructor isn't available when null safety is enabled
Error: Can't use the default List constructor
报错原因
Dart 2.12及以上版本启用空安全后,已经彻底移除了默认的List()构造函数,该构造函数原本的作用是创建空的固定长度列表,不符合空安全的类型校验规则,因此被官方废弃。
适配方案
针对你当前的代码场景,最简单的修改方式是使用列表字面量创建空的可增长列表:
把原来的var taskList = new List<EventModel>();替换为var taskList = <EventModel>[];
修改后的完整代码如下:
Future<List<EventModel>> getTaskList() async { var taskMapList = await getTasks(); var taskList = <EventModel>[]; for (Map map in taskMapList) { taskList.add(EventModel.fromMap(map)); } return taskList; }
你也可以根据实际需求选择其他适配方案:
- 如果你需要创建固定长度的列表,可以使用
List.filled构造函数:
非空类型需要传入默认填充值:List<EventModel>.filled(指定长度, 默认填充的EventModel实例)
可空类型可以填充null:List<EventModel?>.filled(10, null) - 当前的列表转换场景可以直接用
map方法简化代码,不需要手动循环添加元素:Future<List<EventModel>> getTaskList() async { var taskMapList = await getTasks(); return taskMapList.map((map) => EventModel.fromMap(map)).toList(); }
内容的提问来源于stack exchange,提问作者Davi Reimann Rossini
相关产品推荐
相关产品推荐

