Колон после конструктора в дротике

Этот код взят из флаттер-галереи, и я пытаюсь понять и адаптировать его. Я бы знал, что означает этот синтаксис:

class DemoItem<T> {
  DemoItem({
    this.valueName,
    this.hintName,
    this.valueSurname,
    this.hintSurname,
    this.builder,
    this.valueToString

  }) : textController = new TextEditingController(text: valueToString(valueName));

Особенно я бы знал, что означает двоеточие после конструктора и есть ли способ определить другой TextEditingController, в дополнение к уже определенному.

Ответы

Ответ 1

Часть после того, как :. Называется "список инициализатора Это , список -separated выражения, которые могут получить доступ к параметрам конструктор и может присваиваемые полей экземпляр, даже final. Полей экземпляра Это удобно инициализировать конечные поля с расчетными значениями.

Список инициализаторов также используется для вызова других конструкторов, таких как :..., super('foo').

Начиная с версии 1.24 Dart, список инициализаторов также поддерживает assert(...) что удобно для проверки значений параметров.

Список инициализатора не может прочитать из this потому что супер-конструкторы должны быть завершены, прежде чем доступ к this действителен, но он может быть назначен this.xxx.

Указывая, как упомянуто в комментариях пользователя 693336:

Это также означает, что список инициализатора выполняется перед телом конструктора. Кроме того, списки инициализаторов всех суперклассов выполняются до того, как будут выполнены какие-либо тела-конструкторы.