web-dev-qa-db-fra.com

Colon après constructeur en fléchette

Ce code provient de la galerie Flutter et j'essaie de le comprendre et de l'adapter. Je saurais ce que cette syntaxe signifie:

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

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

En particulier, je saurais ce qui signifie les deux points après le constructeur et s'il existe un moyen de définir un autre TextEditingController, en plus de celui déjà défini.

21
Vincenzo Laudato

La partie après : Est appelée "liste d'initialisation. Il s'agit d'une liste d'expressions séparées par , Qui peut accéder aux paramètres du constructeur et peut être affectée aux champs d'instance, même final champs d'instance Ceci est pratique pour initialiser les champs finaux avec des valeurs calculées.

La liste d'initialisation est également utilisée pour appeler d'autres constructeurs comme : ..., super('foo').

Depuis la version 1.24 de Dart, la liste des initialiseurs prend également en charge assert(...), ce qui est pratique pour vérifier les valeurs des paramètres.

La liste d'initialisation ne peut pas lire à partir de this car les super constructeurs doivent être complétés avant que l'accès à this soit valide, mais il peut être assigné à this.xxx.

Soulignant comme mentionné dans les commentaires de user693336:

Cela signifie également que la liste d'initialisation est exécutée avant le corps du constructeur. De plus, les listes d'initialisation de toutes les superclasses sont exécutées avant l'exécution des corps de construction.

35