跳到主要内容

body_might_complete_normally

函数体可能正常完成,导致返回 'null',但返回类型 '{0}' 是一个可能非空的类型。

描述

#

当方法或函数返回类型是可能非空,但控制流到达函数末尾时会隐式返回 null,分析器会生成此诊断信息。

示例

#

以下代码会生成此诊断信息,因为方法 m 在方法末尾隐式插入了 null 返回,但该方法声明为不返回 null

dart
class C {
  int m(int t) {
    print(t);
  }
}

以下代码会生成此诊断信息,因为方法 m 在方法末尾隐式插入了 null 返回,但由于类 C 可以用非空类型参数实例化,该方法实际上被声明为不返回 null

dart
class C<T> {
  T m(T t) {
    print(t);
  }
}

常见修复方法

#

如果可以返回一个合理的值,请在方法末尾添加一个 return 语句

dart
class C<T> {
  T m(T t) {
    print(t);
    return t;
  }
}

如果方法不会到达隐式返回,请在方法末尾添加一个 throw

dart
class C<T> {
  T m(T t) {
    print(t);
    throw '';
  }
}

如果方法有意在末尾返回 null,请在方法末尾添加一个显式的 return null,并更改返回类型使其可以返回 null

dart
class C<T> {
  T? m(T t) {
    print(t);
    return null;
  }
}