yield_in_non_generator
yield 語句必須在生成器函式中(即用 'async*' 或 'sync*' 標記的函式)。
yield-each 語句必須在生成器函式中(即用 'async*' 或 'sync*' 標記的函式)。
描述
#當 yield 或 yield* 語句出現在函式體未使用 async* 或 sync* 修飾符標記的函式中時,分析器會產生此診斷。
示例
#以下程式碼會產生此診斷,因為在函式體沒有修飾符的情況下使用了 yield
dart
Iterable<int> get digits {
yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
}以下程式碼會產生此診斷,因為在函式體使用了 async 修飾符而不是 async* 修飾符的情況下使用了 yield*
dart
Stream<int> get digits async {
yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
}常見修復方法
#新增修飾符,或者將現有修飾符更改為 async* 或 sync*
dart
Iterable<int> get digits sync* {
yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
}