メインコンテンツにスキップ

final_not_initialized_constructor

すべての final 変数は初期化される必要がありますが、'{0}' と '{1}' は初期化されていません。

すべての final 変数は初期化される必要がありますが、'{0}' は初期化されていません。

すべての final 変数は初期化される必要がありますが、'{0}', '{1}', および他の {2} 個が初期化されていません。

説明

#

この診断は、クラスが初期化子なしで 1 つ以上の final インスタンスフィールドを定義しており、それらのフィールドを初期化しないコンストラクタが少なくとも 1 つある場合に、アナライザによって生成されます。すべての final インスタンスフィールドは、インスタンスが作成されるときに、フィールドの初期化子またはコンストラクタによって初期化される必要があります。

#

次のコードは、この診断を生成します

dart
class C {
  final String value;

  C();
}

一般的な修正

#

値がコンストラクタに直接渡されるべき場合は、初期化フォーマルパラメータを使用してフィールド value を初期化してください。

dart
class C {
  final String value;

  C(this.value);
}

値が呼び出し元から提供された値から間接的に計算されるべき場合は、パラメータを追加して初期化子を含めてください。

dart
class C {
  final String value;

  C(Object o) : value = o.toString();
}

フィールドの値がコンストラクタに渡すことができる値に依存しない場合は、フィールド宣言の一部としてフィールドの初期化子を追加してください。

dart
class C {
  final String value = '';

  C();
}

フィールドの値がコンストラクタに渡すことができる値に依存しないが、異なるコンストラクタで異なる値に初期化する必要がある場合は、初期化子リストでフィールドの初期化子を追加してください。

dart
class C {
  final String value;

  C() : value = '';

  C.named() : value = 'c';
}

ただし、値がすべてのインスタンスで同じ場合は、インスタンスフィールドの代わりに静的フィールドの使用を検討してください。

dart
class C {
  static const String value = '';

  C();
}