listen<T> method

void listen<T>(
  1. SubscriptionHandlerMixin mixin,
  2. dynamic listen(
    1. T data
    ), {
  3. dynamic onError(
    1. dynamic e
    )?,
})

监听T类型及其子类型的事件

mixin SubscriptionHandlerMixin混入器,统一管理StreamSubscription

listen 正常回调

onError 错误回调

Implementation

void listen<T>(SubscriptionHandlerMixin mixin, Function(T data) listen, {Function(dynamic e)? onError}) {
  Stream<T> stream;
  if (T == dynamic) {
    stream = _broadcast.stream as Stream<T>;
  } else {
    stream = _broadcast.stream.where((event) => event is T).cast<T>();
  }
  // 订阅对应的数据监听
  StreamSubscription subs = stream.handleError((e) => onError?.call(e)).listen((data) => listen.call(data));
  mixin.addSubscription(subs);
}