maybeWhen<R> method

R maybeWhen<R>({
  1. R success(
    1. T result
    )?,
  2. R error(
    1. Object error,
    2. StackTrace? stackTrace
    )?,
  3. R inProgress()?,
  4. R idle()?,
  5. required R orElse(),
})

Similar to when, but doesn't require all states to be explicitly handled, therefore the orElse callback must be provided as a fallback handler.

Implementation

R maybeWhen<R>({
  R Function(T result)? success,
  R Function(Object error, StackTrace? stackTrace)? error,
  R Function()? inProgress,
  R Function()? idle,
  required R Function() orElse,
}) {
  if (this is _InProgress) {
    if (inProgress != null) {
      return inProgress();
    } else {
      return orElse();
    }
  } else if (this is _Error) {
    final err = this as _Error;
    if (error != null) {
      return error(err.error, err.stackTrace);
    } else {
      return orElse();
    }
  } else if (this is _Success) {
    if (success != null) {
      return success((this as _Success<T>).results);
    } else {
      return orElse();
    }
  } else {
    if (idle != null) {
      return idle();
    } else {
      return orElse();
    }
  }
}