watchOnly4<R, T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4> function

R watchOnly4<R, T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4>(
  1. BuildContext context,
  2. R selector(
    1. T1,
    2. T2,
    3. T3,
    4. T4,
    ),
  3. Object obs1,
  4. Object obs2,
  5. Object obs3,
  6. Object obs4,
  7. ContextWatcherObservableType type1,
  8. ContextWatcherObservableType type2,
  9. ContextWatcherObservableType type3,
  10. 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;
}