watchEffect2<T1, T2, TObs1, TObs2> function

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

Implementation

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

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