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