chain method

  1. @override
Callback4Arg<T1, T2, T3, T4> chain(
  1. covariant Callback4Arg<T1, T2, T3, T4>? a,
  2. covariant Callback4Arg<T1, T2, T3, T4>? b
)
override

Returns a strongly-typed chained callback that calls through to the two provided callbacks, a and b, in order. Useful for executing multiple callbacks where only a single callback is accepted.

Returns false if one or more of the provided callbacks returns false.

Gracefully handles when a and/or b are null, always returning a callable function.

Implementation

@override
Callback4Arg<T1, T2, T3, T4> chain(Callback4Arg<T1, T2, T3, T4>? a, Callback4Arg<T1, T2, T3, T4>? b) {
  if (a == null) return b ?? noop;
  if (b == null) return a;

  dynamic chained(T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
    var aDidReturnFalse = a(arg1, arg2, arg3, arg4) == false;
    var bDidReturnFalse = b(arg1, arg2, arg3, arg4) == false;

    if (aDidReturnFalse || bDidReturnFalse) return false;
  }

  return chained;
}