join<R> method

AsyncValue<R> join<R>(
  1. R mapper(
    1. T1,
    2. T2,
    3. T3,
    4. T4,
    5. T5,
    )
)

Joins five AsyncValue into one.

The resulting AsyncValue will be:

Implementation

AsyncValue<R> join<R>(R Function(T1, T2, T3, T4, T5) mapper) {
  if ($1 is AsyncData &&
      $2 is AsyncData &&
      $3 is AsyncData &&
      $4 is AsyncData &&
      $5 is AsyncData) {
    return AsyncValue<R>.data(mapper(
      ($1 as AsyncData<T1>).data,
      ($2 as AsyncData<T2>).data,
      ($3 as AsyncData<T3>).data,
      ($4 as AsyncData<T4>).data,
      ($5 as AsyncData<T5>).data,
    ));
  }

  final data = $1.data != null &&
          $2.data != null &&
          $3.data != null &&
          $4.data != null &&
          $5.data != null
      ? mapper(
          $1.data as T1,
          $2.data as T2,
          $3.data as T3,
          $4.data as T4,
          $5.data as T5,
        )
      : null;

  if ($1 is AsyncError ||
      $2 is AsyncError ||
      $3 is AsyncError ||
      $4 is AsyncError ||
      $5 is AsyncError) {
    final asyncError = $1 is AsyncError
        ? $1 as AsyncError
        : $2 is AsyncError
            ? $2 as AsyncError
            : $3 is AsyncError
                ? $3 as AsyncError
                : $4 is AsyncError
                    ? $4 as AsyncError
                    : $5 as AsyncError;
    final error = asyncError.error;
    final stackTrace = asyncError.stackTrace;

    return AsyncValue<R>.error(
      error,
      stackTrace,
      data,
    );
  }

  return AsyncValue<R>.loading(data);
}