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;
}