watchOnly2<R, T1, T2, TObs1, TObs2> function

R watchOnly2<R, T1, T2, TObs1, TObs2>(
  1. BuildContext context,
  2. R selector(
    1. T1,
    2. T2
    ),
  3. Object obs1,
  4. Object obs2,
  5. T1 defaultValue1,
  6. T2 defaultValue2,
)

Implementation

R watchOnly2<R, T1, T2, TObs1, TObs2>(
  BuildContext context,
  R Function(T1, T2) selector,
  Object obs1,
  Object obs2,
  T1 defaultValue1,
  T2 defaultValue2,
) {
  final contextWatch = InheritedContextWatch.of(context);

  final observable1 = contextWatch.getOrCreateObservable<TObs1>(context, obs1);
  if (observable1 == null) {
    return selector(defaultValue1, defaultValue2);
  }
  final arg1 = observable1.subscription.callbackArgument as T1;

  final observable2 = contextWatch.getOrCreateObservable<TObs2>(context, obs2)!;
  final arg2 = observable2.subscription.callbackArgument as T2;

  final selectedValue = selector(arg1, arg2);
  observable1.watchOnly(
    (arg1) => selector(
      arg1,
      observable2.subscription.callbackArgument as T2,
    ),
    selectedValue,
  );
  observable2.watchOnly(
    (arg2) => selector(
      observable1.subscription.callbackArgument as T1,
      arg2,
    ),
    selectedValue,
  );
  return selectedValue;
}