跳到主要内容

yield_in_non_generator

yield 语句必须在生成器函数中(即用 'async*' 或 'sync*' 标记的函数)。

yield-each 语句必须在生成器函数中(即用 'async*' 或 'sync*' 标记的函数)。

描述

#

yieldyield* 语句出现在函数体未使用 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];
}