when<R> method

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

Maps this state to a value using the provided callbacks.

final widget = state.when(
  loading: () => CircularProgressIndicator(),
  data: (value) => Text('$value'),
  error: (e, st) => Text('Error: $e'),
);

Implementation

R when<R>({
  required R Function() loading,
  required R Function(T value) data,
  required R Function(Object error, StackTrace? stackTrace) onError,
}) {
  return switch (this) {
    AsyncLoading<T>() => loading(),
    AsyncData<T>(:final value) => data(value),
    AsyncError<T>(:final error, :final stackTrace) =>
      onError(error, stackTrace),
  };
}