readAllEventsUntil method

Future<List<Event>> readAllEventsUntil(
  1. String name,
  2. String eventPredicate
)

Collects all events of type name until eventPredicate event occurs.

Useful for gathering multi-part responses like Status or ShowChannels.

Example:

final channels = await readAllEventsUntil('Status', 'StatusComplete');

Implementation

Future<List<Event>> readAllEventsUntil(String name, String eventPredicate) {
  final completer = Completer<List<Event>>();
  final res = <Event>[];

  final listener =
      registerEvent(name).listen((e) => res.add(e), cancelOnError: true);
  readEvent(eventPredicate).then((value) {
    listener.cancel();
    completer.complete(res);
  });
  return completer.future;
}