Client/lib/state/infrastructure/loadable_state.dart

32 lines
842 B
Dart

class LoadableState<TState> {
final LoadingState loadingState;
final TState? data;
const LoadableState({required this.loadingState, required this.data});
LoadableState<TState> loading() =>
LoadableState<TState>(loadingState: LoadingState.loading, data: null);
LoadableState<TState> cached(TState state) =>
LoadableState<TState>(loadingState: LoadingState.loading, data: state);
LoadableState<TState> done(TState state) =>
LoadableState<TState>(loadingState: LoadingState.none, data: state);
LoadableState<TState> error(TState state) =>
LoadableState<TState>(loadingState: LoadingState.none, data: state);
bool isBackgroundLoading() =>
loadingState == LoadingState.loading && data != null;
bool hasStateData() =>
data != null;
}
enum LoadingState {
loading,
failed,
none,
}