MultiStreamsListener<P extends StreamsProvidable, T1, T2> constructor
MultiStreamsListener<P extends StreamsProvidable, T1, T2> ({
- Key? key,
- P? provider,
- Stream<
T1> selector1(- BuildContext,
- P
- StreamsWidgetListener<
T1> ? listener1, - StreamsListenable<
P, T1> ? listenable1, - Stream<
T2> selector2(- BuildContext,
- P
- StreamsWidgetListener<
T2> ? listener2, - StreamsListenable<
P, T2> ? listenable2, - 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>);