when<R> method

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

Exhaustively pattern-matches all three async states.

Every branch must be provided. For partial matching, see maybeWhen or whenOrNull.

Implementation

R when<R>({
  required R Function(T data) data,
  required R Function(T? previousData) loading,
  required R Function(Object error, StackTrace stackTrace) error,
}) {
  final onData = data;
  final onLoading = loading;
  final onError = error;

  return switch (this) {
    AsyncData<T>(:final value) => onData(value),
    AsyncLoading<T>(:final previousData) => onLoading(previousData),
    AsyncError<T>(:final error, :final stackTrace) => onError(
      error,
      stackTrace,
    ),
  };
}