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