import 'package:flutter_bloc/flutter_bloc.dart'; import '../../constants/constants.dart'; import 'book_event.dart'; import 'book_state.dart'; class BookBloc extends Bloc { BookBloc() : super(const BookState(books: initialBooks)) { on((event, emit) { emit(BookState(books: [...state.books, event.book])); }); on((event, emit) { final updated = state.books.map((b) { return b.id == event.book.id ? event.book : b; }).toList(); emit(BookState(books: updated)); }); on((event, emit) { emit( BookState(books: state.books.where((b) => b.id != event.id).toList()), ); }); on((event, emit) { final updated = state.books.map((b) { if (b.id != event.id) return b; return ( id: b.id, title: b.title, author: b.author, genre: b.genre, annotation: b.annotation, coverUrl: b.coverUrl, pages: b.pages, language: b.language, publishedYear: b.publishedYear, rating: b.rating, status: b.status, progress: b.progress, isFavorite: !b.isFavorite, ); }).toList(); emit(BookState(books: updated)); }); } }