map<R> method

R map<R>({
  1. required R loading(),
  2. required R error(
    1. Object error,
    2. StackTrace? stackTrace
    ),
  3. required R data(
    1. T data
    ),
})

Pattern matching method similar to Riverpod's AsyncValue.map

Implementation

R map<R>({
  required R Function() loading,
  required R Function(Object error, StackTrace? stackTrace) error,
  required R Function(T data) data,
}) {
  if (this is AsyncLoading<T>) {
    return loading();
  } else if (this is AsyncError<T>) {
    final errorState = this as AsyncError<T>;
    return error(errorState.error, errorState.stackTrace);
  } else if (this is AsyncData<T>) {
    final dataState = this as AsyncData<T>;
    return data(dataState.value);
  }
  throw StateError('Unhandled AsyncValue state');
}