跳到主要內容

未_初始化_非_可空_變數

非可空變數 '{0}' 必須初始化。

描述

#

當靜態欄位或頂層變數的型別是非可空且沒有初始化器時,分析器會產生此診斷資訊。沒有初始化器的欄位和變數通常會被初始化為 null,但欄位或變數的型別不允許設定為 null,因此必須提供一個顯式的初始化器。

示例

#

以下程式碼產生此診斷資訊,因為欄位 f 不能被初始化為 null

dart
class C {
  static int f;
}

類似地,以下程式碼產生此診斷資訊,因為頂層變數 v 不能被初始化為 null

dart
int v;

常見修復方法

#

如果欄位或變數不能被初始化為 null,則新增一個初始化器,將其設定為一個非空值

dart
class C {
  static int f = 0;
}

如果欄位或變數應該被初始化為 null,則將其型別更改為可空型別

dart
int? v;

如果欄位或變數不能在宣告時初始化,但在引用它之前總是會被初始化,則將其標記為 late

dart
class C {
  static late int f;
}