web-dev-qa-db-ja.com

ダーツのコンストラクターの後のコロン

このコードはフラッターギャラリーからのもので、私はそれを理解し、適応させようとしています。私はこの構文の意味を知っています:

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

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

特に、私はコンストラクタの後のコロンを意味するを知っており、すでに定義されているものに加えて別のTextEditingControllerを定義する方法があれば。

21

_:_の後の部分は、「初期化子リスト」と呼ばれます。これは、コンストラクタパラメータにアクセスでき、インスタンスフィールド、finalインスタンスフィールドに割り当てることができる、_,_で区切られた式のリストです。最終フィールドを計算値で初期化するのに便利です。

初期化リストは、: ..., super('foo')などの他のコンストラクターの呼び出しにも使用されます。

Dartバージョン1.24以降では、イニシャライザーリストはassert(...)もサポートしています。これはパラメーター値をチェックするのに便利です。

thisへのアクセスが有効になる前にスーパーコンストラクターを完了する必要があるため、初期化リストはthisから読み取ることができませんが、_this.xxx_に割り当てることができます。

User693336のコメントに記載されているように指摘します。

これは、コンストラクター本体の前に初期化リストが実行されることも意味します。また、コンストラクター本体のいずれかが実行される前に、すべてのスーパークラスの初期化リストが実行されます。

35