watchOnly4<R, T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4> function
R
watchOnly4<R, T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4>(
- BuildContext context,
- R selector(
- T1,
- T2,
- T3,
- T4,
- Object obs1,
- Object obs2,
- Object obs3,
- Object obs4,
- ContextWatcherObservableType type1,
- ContextWatcherObservableType type2,
- ContextWatcherObservableType type3,
- ContextWatcherObservableType type4,
Implementation
R watchOnly4<R, T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4>(
BuildContext context,
R Function(T1, T2, T3, T4) selector,
Object obs1,
Object obs2,
Object obs3,
Object obs4,
ContextWatcherObservableType type1,
ContextWatcherObservableType type2,
ContextWatcherObservableType type3,
ContextWatcherObservableType type4,
) {
final contextWatch = InheritedContextWatch.of(context);
final observable1 = contextWatch.getOrCreateObservable<TObs1>(
context,
obs1,
type1,
);
final arg1 = observable1.subscription.callbackArgument as T1;
final observable2 = contextWatch.getOrCreateObservable<TObs2>(
context,
obs2,
type2,
);
final arg2 = observable2.subscription.callbackArgument as T2;
final observable3 = contextWatch.getOrCreateObservable<TObs3>(
context,
obs3,
type3,
);
final arg3 = observable3.subscription.callbackArgument as T3;
final observable4 = contextWatch.getOrCreateObservable<TObs4>(
context,
obs4,
type4,
);
final arg4 = observable4.subscription.callbackArgument as T4;
final selectedValue = selector(arg1, arg2, arg3, arg4);
observable1.watchOnly(
(arg1) => selector(
arg1,
observable2.subscription.callbackArgument as T2,
observable3.subscription.callbackArgument as T3,
observable4.subscription.callbackArgument as T4,
),
selectedValue,
);
observable2.watchOnly(
(arg2) => selector(
observable1.subscription.callbackArgument as T1,
arg2,
observable3.subscription.callbackArgument as T3,
observable4.subscription.callbackArgument as T4,
),
selectedValue,
);
observable3.watchOnly(
(arg3) => selector(
observable1.subscription.callbackArgument as T1,
observable2.subscription.callbackArgument as T2,
arg3,
observable4.subscription.callbackArgument as T4,
),
selectedValue,
);
observable4.watchOnly(
(arg4) => selector(
observable1.subscription.callbackArgument as T1,
observable2.subscription.callbackArgument as T2,
observable3.subscription.callbackArgument as T3,
arg4,
),
selectedValue,
);
return selectedValue;
}