repository and data provider concept

This commit is contained in:
2024-05-07 22:15:56 +02:00
parent 6ad8203b6a
commit b171fef348
14 changed files with 129 additions and 104 deletions

View File

@ -1,17 +1,32 @@
import '../../../infrastructure/loadableState/loadable_hydrated_bloc.dart';
import '../../../infrastructure/repository/repository.dart';
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
import '../repository/marianum_message_repository.dart';
import 'marianum_message_state.dart';
class MarianumMessageBloc extends LoadableHydratedBloc<void, MarianumMessageState> {
MarianumMessageBloc();
sealed class MarianumMessageEvent extends LoadableHydratedBlocEvent<MarianumMessageState> {}
class MessageEvent extends MarianumMessageEvent {}
class MarianumMessageBloc extends LoadableHydratedBloc<MarianumMessageEvent, MarianumMessageState, MarianumMessageRepository> {
MarianumMessageBloc() {
on<MessageEvent>((event, emit) {
add(Emit((state) => state.copyWith.messageList(messages: [])));
});
}
@override
Future<void> loadState() async {
var messages = await repo.getMessages();
add(Emit((state) => state.copyWith(messageList: messages)));
}
@override
MarianumMessageRepository repository() => MarianumMessageRepository();
@override
MarianumMessageState fromNothing() => const MarianumMessageState(messageList: MarianumMessageList(base: "", messages: []));
@override
MarianumMessageState fromStorage(Map<String, dynamic> json) => MarianumMessageState.fromJson(json);
@override
Map<String, dynamic>? toStorage(MarianumMessageState state) => state.toJson();
@override
Repository repository() => MarianumMessageRepository(emit);
}