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