abstract class LoadingState { const LoadingState(); factory LoadingState.loading() = Loading; factory LoadingState.empty() = Empty; factory LoadingState.success(T response) = Success; factory LoadingState.error(String errMsg) = Error; } class Loading extends LoadingState { const Loading(); } class Empty extends LoadingState { const Empty(); } class Success extends LoadingState { final T response; const Success(this.response); } class Error extends LoadingState { final String errMsg; const Error(this.errMsg); }