maybeWhen<R> method
- bool skipLoadingOnReload = false,
- bool skipLoadingOnRefresh = true,
- bool skipError = false,
- R data(
- T data
- R error(
- Object error,
- StackTrace stackTrace
- R loading()?,
- required R orElse(),
Switch-case over the state of the AsyncValue while purposefully not handling some cases.
If AsyncValue was in a case that is not handled, will return orElse
.
By default, when skips "loading" states if triggered by a Ref.refresh or Ref.invalidate (but does not skip loading states if triggered by Ref.watch).
In the event that an AsyncValue is in multiple states at once (such as
when reloading a provider or emitting an error after a valid data),
when offers various flags to customize whether it should call
loading
/error
/data
:
-
skipLoadingOnReload
(false by default) customizes whetherloading
should be invoked if a provider rebuilds because of Ref.watch. In that situation, when will try to invoke eithererror
/data
with the previous state. -
skipLoadingOnRefresh
(true by default) controls whetherloading
should be invoked if a provider rebuilds because of Ref.refresh or Ref.invalidate. In that situation, when will try to invoke eithererror
/data
with the previous state. -
skipError
(false by default) decides whether to invokedata
instead oferror
if a previous value is available.
Implementation
R maybeWhen<R>({
bool skipLoadingOnReload = false,
bool skipLoadingOnRefresh = true,
bool skipError = false,
R Function(T data)? data,
R Function(Object error, StackTrace stackTrace)? error,
R Function()? loading,
required R Function() orElse,
}) {
return when(
skipError: skipError,
skipLoadingOnRefresh: skipLoadingOnRefresh,
skipLoadingOnReload: skipLoadingOnReload,
data: data ?? (_) => orElse(),
error: error ?? (err, stack) => orElse(),
loading: loading ?? () => orElse(),
);
}