mapOrNull<R> method

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

Pattern matching method that doesn't require all cases

Implementation

R? mapOrNull<R>({
  R Function()? loading,
  R Function(Object error, StackTrace? stackTrace)? error,
  R Function(T data)? data,
}) {
  if (this is AsyncLoading<T>) {
    return loading?.call();
  } else if (this is AsyncError<T>) {
    final errorState = this as AsyncError<T>;
    return error?.call(errorState.error, errorState.stackTrace);
  } else if (this is AsyncData<T>) {
    final dataState = this as AsyncData<T>;
    return data?.call(dataState.value);
  }
  return null;
}