waitForEmissions method
Waits for a specific number of emissions.
Implementation
Future<void> waitForEmissions(int count, {Duration? timeout}) async {
final completer = Completer<void>();
final targetCount = _emissions.length + count;
void check() {
if (_emissions.length >= targetCount && !completer.isCompleted) {
completer.complete();
}
}
final sub = bloc.stream.listen((_) => check());
try {
await completer.future.timeout(
timeout ?? const Duration(seconds: 5),
onTimeout: () => throw TimeoutException(
'Timed out waiting for $count emissions',
),
);
} finally {
await sub.cancel();
}
}