Как инициализировать список / карту в качестве аргумента по умолчанию? - PullRequest
1 голос
/ 17 июня 2020

Я знаю, как инициализировать другие переменные, такие как int или String в конструкторе, но понятия не имею, как это сделать для List и Map.

class StackOverFlowQuestion{
StackOverFlowQuestion({this.test='', this.map=?, this.list=?});
String test;
Map map;
List list;
}

Чем мне заменить вопросительные знаки?

Спасибо.

1 Ответ

5 голосов
/ 17 июня 2020

Ответ зависит от того, являются ли ваш список и карта по умолчанию постоянными. Предположим, ваш список есть, а карта - нет.

Вы должны написать:

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

  String test;
  Map map;
  List list;
}

Если необязательный параметр списка опущен, он будет инициализирован как [1, 2, 3]. Если карта опущена или пуста, она будет инициализирована изменяемой пустой картой.

...