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

フィールド_初期化_宣言_および_初期化子_での_初期化

final フィールドが宣言時にすでに初期化されている場合、コンストラクタで初期化することはできません。

説明

#

この診断は、final フィールドがフィールドの宣言とコンストラクタの初期化子の両方で初期化されている場合に、アナライザーによって生成されます。final フィールドは一度しか代入できないため、両方の場所で初期化することはできません。

#

次のコードは、f

dart
class C {
  final int f = 0;
  C() : f = 1;
}

一般的な修正

#

初期化がコンストラクタに渡された値に依存せず、すべてのコンストラクタでフィールドを同じ値に初期化する必要がある場合は、コンストラクタから初期化子を削除してください。

dart
class C {
  final int f = 0;
  C();
}

初期化がコンストラクタに渡された値に依存する場合、または異なるコンストラクタでフィールドを異なる値に初期化する必要がある場合は、フィールドの宣言の初期化子を削除してください。

dart
class C {
  final int f;
  C() : f = 1;
}