MultiStreamsListener<P extends StreamsProvidable, T1, T2> constructor

MultiStreamsListener<P extends StreamsProvidable, T1, T2>({
  1. Key? key,
  2. P? provider,
  3. Stream<T1> selector1(
    1. BuildContext,
    2. P
    )?,
  4. StreamsWidgetListener<T1>? listener1,
  5. StreamsListenable<P, T1>? listenable1,
  6. Stream<T2> selector2(
    1. BuildContext,
    2. P
    )?,
  7. StreamsWidgetListener<T2>? listener2,
  8. StreamsListenable<P, T2>? listenable2,
  9. Widget? child,
})

Implementation

MultiStreamsListener({
  Key? key,
  P? provider,
  Stream<T1> Function(BuildContext, P)? selector1,
  StreamsWidgetListener<T1>? listener1,
  StreamsListenable<P, T1>? listenable1,
  Stream<T2> Function(BuildContext, P)? selector2,
  StreamsWidgetListener<T2>? listener2,
  StreamsListenable<P, T2>? listenable2,
  Widget? child,
})  : assert((listenable1 != null ||
              (listener1 != null && selector1 != null)) &&
          (listenable2 != null || (listener2 != null && selector2 != null))),
      super(
          key: key,
          child: child,
          selectors: [
            (context) {
              final p = provider ?? StreamsProvider.of<P>(context);

              if (selector1 != null) return selector1(context, p);

              return listenable1!.selector(context, p);
            },
            (context) {
              final p = provider ?? StreamsProvider.of<P>(context);

              if (selector2 != null) return selector2(context, p);

              return listenable2!.selector(context, p);
            }
          ],
          listeners: [
            listener1 ??
                (context, data) => listenable1!.handler(
                      context,
                      provider ?? StreamsProvider.of(context),
                      data,
                    ),
            listener2 ??
                (context, data) => listenable2!.handler(
                      context,
                      provider ?? StreamsProvider.of(context),
                      data,
                    ),
          ] as List<StreamsWidgetListener>);