whenData<R> method

AsyncValue<R> whenData<R>(
  1. R cb(
    1. T value
    )
)

Shorthand for when to handle only the data case.

For loading/error cases, creates a new AsyncValue with the corresponding generic type while preserving the error/stacktrace.

Implementation

AsyncValue<R> whenData<R>(R Function(T value) cb) {
  return map(
    data: (d) {
      try {
        return AsyncData._(
          cb(d.value),
          isLoading: d.isLoading,
          error: d.error,
          stackTrace: d.stackTrace,
        );
      } catch (err, stack) {
        return AsyncError._(
          err,
          stackTrace: stack,
          isLoading: d.isLoading,
          value: null,
          hasValue: false,
        );
      }
    },
    error: (e) => AsyncError._(
      e.error,
      stackTrace: e.stackTrace,
      isLoading: e.isLoading,
      value: null,
      hasValue: false,
    ),
    loading: (l) => AsyncLoading<R>(),
  );
}