matchOrElse<R> method

R matchOrElse<R>({
  1. R asyncLoading(
    1. AsyncLoading<T> data
    )?,
  2. R asyncLoaded(
    1. AsyncLoaded<T> data
    )?,
  3. R asyncFailed(
    1. AsyncFailed<T> data
    )?,
  4. required R orElse(
    1. AsyncState data
    ),
})

Implementation

R matchOrElse<R>({
  R Function(AsyncLoading<T> data)? asyncLoading,
  R Function(AsyncLoaded<T> data)? asyncLoaded,
  R Function(AsyncFailed<T> data)? asyncFailed,
  required R Function(AsyncState data) orElse,
}) {
  final r = switch (this) {
    AsyncLoading<T>() => asyncLoading == null
        ? orElse(this as AsyncLoading<T>)
        : asyncLoading(this as AsyncLoading<T>),
    AsyncLoaded<T>() => asyncLoaded == null
        ? orElse(this as AsyncLoaded<T>)
        : asyncLoaded(this as AsyncLoaded<T>),
    AsyncFailed<T>() => asyncFailed == null
        ? orElse(this as AsyncFailed<T>)
        : asyncFailed(this as AsyncFailed<T>),
    _ => orElse(this),
  };
  return r;
}