跳到主內容

not_initialized_non_nullable_instance_field

非空例項欄位“{0}”必須被初始化。

描述

#

當欄位被宣告並具有以下所有特徵時,分析器會生成此診斷資訊:

示例

#

以下程式碼會生成此診斷資訊,因為 x 在不允許為 null 的情況下被隱式初始化為 null

dart
class C {
  int x;
}

類似地,以下程式碼也會生成此診斷資訊,因為 x 在不允許為 null 的情況下,被其中一個建構函式隱式初始化為 null,即使它被其他建構函式初始化了。

dart
class C {
  int x;

  C(this.x);

  C.n();
}

常見修復方法

#

如果該欄位有一個對所有例項都相同的合理預設值,則新增一個初始化表示式。

dart
class C {
  int x = 0;
}

如果欄位的值應在建立例項時提供,則新增一個設定該欄位值的建構函式或更新現有建構函式。

dart
class C {
  int x;

  C(this.x);
}

您也可以將欄位標記為 late,這將消除診斷資訊,但如果在訪問該欄位之前未為其賦值,則會在執行時丟擲異常。只有在您確定該欄位在被引用之前總是會被賦值的情況下,才應使用此方法。

dart
class C {
  late int x;
}