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({ required bool isLoading, required TState? data, required int? lastFetch, required void Function()? reFetch, required 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(); }