跳到主要內容

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