如何将 List/Map 初始化为默认参数?

Tom*_*ran 1 null initialization dart flutter

我知道如何在构造函数中初始化其他变量,例如 int 或 String,但我不知道如何为 List 和 Map 执行此操作。

class StackOverFlowQuestion{
StackOverFlowQuestion({this.test='', this.map=?, this.list=?});
String test;
Map map;
List list;
}
Run Code Online (Sandbox Code Playgroud)

我应该用什么代替问号?

谢谢。

Ric*_*eap 5

答案取决于您的默认列表和地图是否为常量。假设您的列表是,但地图不是。

你会写:

class StackOverFlowQuestion {
  StackOverFlowQuestion({
    this.test = '',
    Map map,
    this.list = const [1, 2, 3],
  }) {
    this.map = map ?? {};
  }

  String test;
  Map map;
  List list;
}
Run Code Online (Sandbox Code Playgroud)

如果省略 list 可选参数,则它将被初始化为[1, 2, 3]. 如果地图被省略或为空,它将使用可变的空地图进行初始化。