when<R> method

R when<R>({
  1. required R idle(),
  2. required R loading(),
  3. required R success(
    1. T data
    ),
  4. required R empty(),
  5. required R failed(
    1. FailureResponse<E> error
    ),
  6. required R networkError(
    1. FailureResponse<E> error
    ),
})

Exhaustive pattern match over all states

Implementation

R when<R>({
  required R Function() idle,
  required R Function() loading,
  required R Function(T data) success,
  required R Function() empty,
  required R Function(FailureResponse<E> error) failed,
  required R Function(FailureResponse<E> error) networkError,
}) {
  return switch (this) {
    IdleState<T, E>()                       => idle(),
    LoadingState<T, E>()                    => loading(),
    SuccessState<T, E>(data: final d)       => success(d),
    EmptyState<T, E>()                      => empty(),
    FailedState<T, E>(error: final e)       => failed(e),
    NetworkErrorState<T, E>(error: final e) => networkError(e),
  };
}