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