launchStream<T> method

StreamSubscription<T> launchStream<T>(
  1. Stream<T> action, {
  2. void onData(
    1. T event
    )?,
  3. Function? onError,
  4. void onDone()?,
  5. bool? cancelOnError,
})

Launch action subscription that will be cancelled on Bloc's close method call. Returns immediately cancelled StreamSubscription if bloc was already disposed.

Implementation

StreamSubscription<T> launchStream<T>(
  Stream<T> action, {
  void Function(T event)? onData,
  Function? onError,
  void Function()? onDone,
  bool? cancelOnError,
}) {
  if (_compositeSubscription.isDisposed) {
    return _EmptyStreamSubscription<T>();
  }

  final subscription = action.listen(
    onData ?? (_) {},
    onError: onError,
    onDone: onDone,
    cancelOnError: cancelOnError,
  );

  try {
    return _compositeSubscription.add(subscription);
  } on String {
    // Composite subscription was disposed in the meantime.
    subscription.cancel();
    return _EmptyStreamSubscription<T>();
  }
}