跳到主要内容

unchecked_use_of_nullable_value

可空表达式不能用作条件。

可空表达式不能在 for-in 循环中用作迭代器。

可空表达式不能用于展开操作符。

可空表达式不能用于 yield-each 语句。

该函数不能无条件调用,因为它可能为 'null'。

方法 '{0}' 不能无条件调用,因为接收者可能为 'null'。

运算符 '{0}' 不能无条件调用,因为接收者可能为 'null'。

属性 '{0}' 不能无条件访问,因为接收者可能为 'null'。

描述

#

分析器在类型为可能不可空的表达式在未首先验证值不为 null 的情况下被解引用时产生此诊断。

示例

#

以下代码产生此诊断,因为 s 在被引用时可能为 null

dart
void f(String? s) {
  if (s.length > 3) {
    // ...
  }
}

常见修复方法

#

如果该值确实可能为 null,则添加一个测试以确保仅在值不为 null 时访问其成员

dart
void f(String? s) {
  if (s != null && s.length > 3) {
    // ...
  }
}

如果表达式是变量且该值不应为 null,则将变量的类型更改为不可空类型

dart
void f(String s) {
  if (s.length > 3) {
    // ...
  }
}

如果您认为表达式的值不应为 null,但无法更改变量的类型,并且愿意承担错误时运行时抛出异常的风险,则可以断言该值不为 null

dart
void f(String? s) {
  if (s!.length > 3) {
    // ...
  }
}