when<R> method

R when<R>({
  1. required R loading(),
  2. required R success(
    1. T data
    ),
  3. required R error(
    1. Object? error
    ),
  4. required R empty(),
  5. R custom()?,
})

Implementation

R when<R>({
  required R Function() loading,
  required R Function(T data) success,
  required R Function(Object? error) error,
  required R Function() empty,
  R Function()? custom,
}) => switch (this) {
  LoadingStatus() => loading(),
  SuccessStatus(:final data) => success(data),
  ErrorStatus(error: final err) => error(err),
  EmptyStatus() => empty(),
  CustomStatus() => (custom ?? loading)(),
};