跳到主内容

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