跳到主要内容

未_初始化_非_可空_变量

非可空变量 '{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;
}