whenOrNull<R> method

R? whenOrNull<R>({
  1. R init()?,
  2. R loading(
    1. ArgT? arg
    )?,
  3. R data(
    1. ArgT? arg,
    2. T data
    )?,
  4. R error(
    1. ArgT? arg,
    2. Object error
    )?,
})

Implementation

R? whenOrNull<R>({
  R Function()? init,
  R Function(ArgT? arg)? loading,
  R Function(ArgT? arg, T data)? data,
  R Function(ArgT? arg, Object error)? error,
}) {
  return switch (this) {
    DataLoading<T>() => loading?.call(null),
    DataSuccess<T>(data: final dataValue) => data?.call(null, dataValue),
    DataError<T>(error: final errorValue) => error?.call(null, errorValue),
    CommandInit<T, ArgT>() => init?.call(),
    CommandLoading<T, ArgT>() => loading?.call(null),
    CommandData<T, ArgT>(data: final dataValue) => data?.call(
      null,
      dataValue,
    ),
    CommandError<T, ArgT>(error: final errorValue) => error?.call(
      null,
      errorValue,
    ),
    ArgCommandInit<T, ArgT>() => init?.call(),
    ArgCommandLoading<T, ArgT>(arg: final arg) => loading?.call(arg),
    ArgCommandData<T, ArgT>(arg: final arg, data: final dataValue) =>
      data?.call(arg, dataValue),
    ArgCommandError<T, ArgT>(arg: final arg, error: final errorValue) =>
      error?.call(arg, errorValue),
    _ => null,
  };
}