このコードはフラッターギャラリーからのもので、私はそれを理解し、適応させようとしています。私はこの構文の意味を知っています:
class DemoItem<T> {
DemoItem({
this.valueName,
this.hintName,
this.valueSurname,
this.hintSurname,
this.builder,
this.valueToString
}) : textController = new TextEditingController(text: valueToString(valueName));
特に、私はコンストラクタの後のコロンを意味するを知っており、すでに定義されているものに加えて別のTextEditingControllerを定義する方法があれば。
_:
_の後の部分は、「初期化子リスト」と呼ばれます。これは、コンストラクタパラメータにアクセスでき、インスタンスフィールド、final
インスタンスフィールドに割り当てることができる、_,
_で区切られた式のリストです。最終フィールドを計算値で初期化するのに便利です。
初期化リストは、: ..., super('foo')
などの他のコンストラクターの呼び出しにも使用されます。
Dartバージョン1.24以降では、イニシャライザーリストはassert(...)
もサポートしています。これはパラメーター値をチェックするのに便利です。
this
へのアクセスが有効になる前にスーパーコンストラクターを完了する必要があるため、初期化リストはthis
から読み取ることができませんが、_this.xxx
_に割り当てることができます。
User693336のコメントに記載されているように指摘します。
これは、コンストラクター本体の前に初期化リストが実行されることも意味します。また、コンストラクター本体のいずれかが実行される前に、すべてのスーパークラスの初期化リストが実行されます。