nextEvent method

Future<T> nextEvent()

Implementation

Future<T> nextEvent() {
  final Completer<T> completer = Completer<T>();
  StreamSubscription<T>? subscription;

  subscription = listen(
    (event) {
      completer.complete(event);
      subscription?.cancel();
    },
    onError: (error) {
      completer.completeError(error);
      subscription?.cancel();
    },
    onDone: () {
      if (!completer.isCompleted) {
        completer.completeError(StateError("Stream was done without emitting any events."));
      }
    },
    cancelOnError: true,
  );

  return completer.future;
}