not_initialized_non_nullable_instance_field
非空例項欄位“{0}”必須被初始化。
描述
#當欄位被宣告並具有以下所有特徵時,分析器會生成此診斷資訊:
- 其型別可能不可為空
- 沒有初始化表示式
- 未標記為
late
示例
#以下程式碼會生成此診斷資訊,因為 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;
}