You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:06:05