when2<T1, T2> method

AsyncPatternMatcher<I, O> when2<T1, T2>(
  1. TransformingPredicate<I, Future<Pair<T1, T2>>> predicate,
  2. FutureOr<O> function(
    1. T1 input1,
    2. T2 input2
    )
)

Implementation

AsyncPatternMatcher<I, O> when2<T1, T2>(
    TransformingPredicate<I, Future<Pair<T1, T2>>> predicate,
    FutureOr<O> Function(T1 input1, T2 input2) function) {
  var newCases = List<_Case<I, Future<Pair<T1, T2>>, Future<O>>>.from(_cases);
  newCases.add(_Case(predicate, (Future<FutureOr<Pair<T1, T2>>> p) async {
    var p2 = await (await p);
    return function(p2.a, p2.b);
  }));
  return AsyncPatternMatcher(newCases);
}