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