watchEffect3<T1, T2, T3, TObs1, TObs2, TObs3> function

void watchEffect3<T1, T2, T3, TObs1, TObs2, TObs3>(
  1. BuildContext context,
  2. void effect(
    1. T1,
    2. T2,
    3. T3
    ),
  3. Object obs1,
  4. Object obs2,
  5. Object obs3,
  6. ContextWatcherObservableType type1,
  7. ContextWatcherObservableType type2,
  8. ContextWatcherObservableType type3, {
  9. Object? key,
  10. bool immediate = false,
  11. bool once = false,
})

Implementation

void watchEffect3<T1, T2, T3, TObs1, TObs2, TObs3>(
  BuildContext context,
  void Function(T1, T2, T3) effect,
  Object obs1,
  Object obs2,
  Object obs3,
  ContextWatcherObservableType type1,
  ContextWatcherObservableType type2,
  ContextWatcherObservableType type3, {
  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,
  );

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