import 'dart:async'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../repositories/admin_repository.dart'; import 'admin_event.dart'; import 'admin_state.dart'; export 'admin_event.dart'; export 'admin_state.dart'; class AdminBloc extends Bloc { final AdminRepository repository; AdminBloc({required this.repository}) : super(AdminInitial()) { on(_onFetchUsers); on(_onCreateUser); on(_onUpdateUser); } Future _onFetchUsers(FetchAdminUsers event, Emitter emit) async { emit(AdminLoading()); try { final users = await repository.fetchUsers(); emit(AdminLoaded(users)); } catch (e) { emit(const AdminError("Fehler beim Laden der Admin-Nutzer.")); } } Future _onCreateUser(CreateAdminUser event, Emitter emit) async { try { await repository.createUser(event.dto); add(FetchAdminUsers()); } catch (e) { emit(AdminError(e.toString())); } } Future _onUpdateUser(UpdateAdminUser event, Emitter emit) async { try { await repository.updateUser(event.id, event.dto); add(FetchAdminUsers()); } catch (e) { emit(const AdminError("Nutzer konnte nicht aktualisiert werden.")); } } }