import 'package:flutter_bloc/flutter_bloc.dart'; import 'favourites_events.dart'; import 'favourites_state.dart'; import 'package:shared_preferences/shared_preferences.dart'; class FavouritesBloc extends Bloc { static const String _likedPrefsKey = 'liked'; FavouritesBloc() : super(const FavouritesState(favouritesIds: [])) { on(_onLoadFavouritesIds); on(_onChangeFavourite); } Future _onLoadFavouritesIds( LoadFavouritesEvent event, Emitter emit ) async { emit(state.copyWith( hasFavouritesLoaded: false, )); final prefs = await SharedPreferences.getInstance(); final data = prefs.getStringList(_likedPrefsKey); emit(state.copyWith( likedIds: data, hasFavouritesLoaded: true, )); } Future _onChangeFavourite( ChangeFavouriteEvent event, Emitter emit ) async { final updatedList = List.from(state.favouritesIds ?? []); if (updatedList.contains(event.id)) { updatedList.remove(event.id); } else { updatedList.add(event.id); } final prefs = await SharedPreferences.getInstance(); prefs.setStringList(_likedPrefsKey, updatedList); emit(state.copyWith( likedIds: updatedList, hasFavouritesLoaded: true, )); } }