return_in_generator
不能从使用 'async*' 或 'sync*' 修饰符的生成器函数返回一个值。
描述
#当生成器函数(其函数体标记有 async* 或 sync*)使用 return 语句返回值,或由于使用 => 隐式返回值时,分析器会生成此诊断信息。在任何这些情况下,都应该使用 yield 代替 return。
示例
#以下代码会生成此诊断信息,因为方法 f 是一个生成器,并且使用了 return 来返回值
dart
Iterable<int> f() sync* {
return 3;
}以下代码会生成此诊断信息,因为函数 f 是一个生成器,并且隐式返回了一个值
dart
Stream<int> f() async* => 3;常见修复方法
#如果函数体使用了 =>,则将其转换为块函数体,并使用 yield 返回值
dart
Stream<int> f() async* {
yield 3;
}如果方法意图作为生成器,则使用 yield 返回值
dart
Iterable<int> f() sync* {
yield 3;
}如果方法不意图作为生成器,则从函数体中移除修饰符(或者如果要返回 Future,则使用 async)
dart
int f() {
return 3;
}