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