import 'package:freezed_annotation/freezed_annotation.dart'; import 'loading_error.dart'; part 'loadable_state.freezed.dart'; @freezed class LoadableState with _$LoadableState { const LoadableState._(); const factory LoadableState({ @Default(true) bool isLoading, @Default(null) TState? data, @Default(null) int? lastFetch, @Default(null) void Function()? reFetch, @Default(null) LoadingError? error, }) = _LoadableState; bool _hasError() => error != null; bool _hasData() => data != null; bool showPrimaryLoading() => isLoading && !_hasData(); bool showBackgroundLoading() => isLoading && _hasData(); bool showErrorBar() => _hasError() && _hasData(); bool showError() => _hasError() && !_hasData(); bool showContent() => _hasData(); }