stream<T> method

Stream<T> stream<T>(
  1. Pod<T> pod
)

Listen to a pod as a Stream.

Implementation

Stream<T> stream<T>(Pod<T> pod) {
  late StreamController<T> controller;
  void Function()? cancel;

  void pause() {
    cancel?.call();
    cancel = null;
  }

  void resume() {
    assert(cancel == null);
    cancel = subscribe(pod, controller.add);
  }

  controller = StreamController(
    onPause: pause,
    onResume: resume,
    onListen: resume,
    onCancel: pause,
    sync: true,
  );

  return controller.stream;
}