maybeWhen<R> method

R maybeWhen<R>({
  1. R data(
    1. T data
    )?,
  2. R loading()?,
  3. R error(
    1. Object error,
    2. StackTrace stackTrace
    )?,
  4. required R orElse(),
  5. bool skipLoading = true,
  6. bool skipError = false,
})

Syntactic sugar for AsyncValue.

final futureState = ref.watch(futureProvider); futureState.maybeWhen( data: (data) => Text(data), orElse: () => const CircularProgressIndicator(), );

Implementation

R maybeWhen<R>({
  R Function(T data)? data,
  R Function()? loading,
  R Function(Object error, StackTrace stackTrace)? error,
  required R Function() orElse,
  bool skipLoading = true,
  bool skipError = false,
}) {
  return switch (this) {
    AsyncData<T> curr => data != null ? data(curr.data) : orElse(),
    AsyncLoading<T> curr => switch (curr.data) {
        T t when skipLoading => data != null ? data(t) : orElse(),
        _ => loading != null ? loading() : orElse(),
      },
    AsyncError<T> curr => switch (curr.data) {
        T t when skipError => data != null ? data(t) : orElse(),
        _ => error != null ? error(curr.error, curr.stackTrace) : orElse(),
      },
  };
}