yield_ in_ non_ generator
Yield statements must be in a generator function (one marked with either 'async*' or 'sync*').
Yield-each statements must be in a generator function (one marked with either 'async*' or 'sync*').
Description
#
The analyzer produces this diagnostic when a
yield
or
yield*
statement
appears in a function whose body isn't marked with one of the
async*
or
sync*
modifiers.
Examples
#
The following code produces this diagnostic because
yield
is being used
in a function whose body doesn't have a modifier:
Iterable<int> get digits {
yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
}
The following code produces this diagnostic because
yield*
is being used
in a function whose body has the
async
modifier rather than the
async*
modifier:
Stream<int> get digits async {
yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
}
Common fixes
#
Add a modifier, or change the existing modifier to be either
async*
or
sync*
:
Iterable<int> get digits sync* {
yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
}
Unless stated otherwise, the documentation on this site reflects Dart 3.9.2. Page last updated on 2025-9-4. View source or report an issue.