wip basics for bloc based state management
This commit is contained in:
31
lib/state/infrastructure/loadable_state.dart
Normal file
31
lib/state/infrastructure/loadable_state.dart
Normal file
@ -0,0 +1,31 @@
|
||||
|
||||
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,
|
||||
}
|
Reference in New Issue
Block a user