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

void watchEffect4<T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4>(
  1. BuildContext context,
  2. void effect(
    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, {
  11. Object? key,
  12. bool immediate = false,
  13. bool once = false,
})

Implementation

void watchEffect4<T1, T2, T3, T4, TObs1, TObs2, TObs3, TObs4>(
  BuildContext context,
  void Function(T1, T2, T3, T4) effect,
  Object obs1,
  Object obs2,
  Object obs3,
  Object obs4,
  ContextWatcherObservableType type1,
  ContextWatcherObservableType type2,
  ContextWatcherObservableType type3,
  ContextWatcherObservableType type4, {
  Object? key,
  bool immediate = false,
  bool once = false,
}) {
  final contextWatch = InheritedContextWatch.of(context);

  final observable1 = contextWatch.getOrCreateObservable<TObs1>(
    context,
    obs1,
    type1,
  );
  final observable2 = contextWatch.getOrCreateObservable<TObs2>(
    context,
    obs2,
    type2,
  );
  final observable3 = contextWatch.getOrCreateObservable<TObs3>(
    context,
    obs3,
    type3,
  );
  final observable4 = contextWatch.getOrCreateObservable<TObs4>(
    context,
    obs4,
    type4,
  );

  observable1.watchEffect(
    (arg1) {
      if (shouldAbortMassEffect4(
        key,
        observable1,
        observable2,
        observable3,
        observable4,
        once: once,
        immediate: immediate,
      )) {
        return;
      }
      final arg2 = observable2.subscription.callbackArgument as T2;
      final arg3 = observable3.subscription.callbackArgument as T3;
      final arg4 = observable4.subscription.callbackArgument as T4;
      effect(arg1, arg2, arg3, arg4);
    },
    key: key,
    immediate: immediate,
    once: once,
  );
  observable2.watchEffect(
    (arg2) {
      if (shouldAbortMassEffect4(
        key,
        observable1,
        observable2,
        observable3,
        observable4,
        once: once,
        immediate: immediate,
      )) {
        return;
      }
      final arg1 = observable1.subscription.callbackArgument as T1;
      final arg3 = observable3.subscription.callbackArgument as T3;
      final arg4 = observable4.subscription.callbackArgument as T4;
      effect(arg1, arg2, arg3, arg4);
    },
    key: key,
    immediate: immediate,
    once: once,
  );
  observable3.watchEffect(
    (arg3) {
      if (shouldAbortMassEffect4(
        key,
        observable1,
        observable2,
        observable3,
        observable4,
        once: once,
        immediate: immediate,
      )) {
        return;
      }
      final arg1 = observable1.subscription.callbackArgument as T1;
      final arg2 = observable2.subscription.callbackArgument as T2;
      final arg4 = observable4.subscription.callbackArgument as T4;
      effect(arg1, arg2, arg3, arg4);
    },
    key: key,
    immediate: immediate,
    once: once,
  );
  observable4.watchEffect(
    (arg4) {
      if (shouldAbortMassEffect4(
        key,
        observable1,
        observable2,
        observable3,
        observable4,
        once: once,
        immediate: immediate,
      )) {
        return;
      }
      final arg1 = observable1.subscription.callbackArgument as T1;
      final arg2 = observable2.subscription.callbackArgument as T2;
      final arg3 = observable3.subscription.callbackArgument as T3;
      effect(arg1, arg2, arg3, arg4);
    },
    key: key,
    immediate: immediate,
    once: once,
  );
}