跳到主要內容

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