跳到主要內容

field_initialized_in_initializer_and_declaration

如果欄位是 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;
}