field_initializer_redirecting_constructor
重定向构造函数不能有字段初始化器。
描述
#当重定向构造函数在对象中初始化一个字段时,分析器会生成此诊断。这是不允许的,因为拥有该字段的实例在应该初始化它的时候尚未创建。
示例
#以下代码生成此诊断,因为构造函数 C.zero
重定向到构造函数 C
,并包含一个初始化形式参数,用于初始化字段 f
dart
class C {
int f;
C(this.f);
C.zero(this.f) : this(f);
}
以下代码生成此诊断,因为构造函数 C.zero
重定向到构造函数 C
,并包含一个初始化器,用于初始化字段 f
dart
class C {
int f;
C(this.f);
C.zero() : f = 0, this(1);
}
常见修复
#如果初始化是通过初始化形式参数完成的,则使用普通参数
dart
class C {
int f;
C(this.f);
C.zero(int f) : this(f);
}
如果初始化是在初始化器中完成的,则移除初始化器
dart
class C {
int f;
C(this.f);
C.zero() : this(0);
}