toSingleSubscriptionStream method

Stream<T> toSingleSubscriptionStream()

Converts a broadcast Stream into a single-subscription Stream.

Implementation

Stream<T> toSingleSubscriptionStream() {
  StreamSubscription<T>? subscription;

  final controller = StreamController<T>(sync: true);
  controller.onListen = () {
    subscription = listen(
      controller.add,
      onError: controller.addError,
      onDone: controller.close,
    );
  };
  controller.onCancel = () {
    final cancel = subscription?.cancel();
    subscription = null;
    return cancel;
  };

  return controller.stream;
}