import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import '../../../data/dtos/hero_dto.dart'; import '../../../data/repositories/hero_repository.dart'; import 'hero_search_event.dart'; import 'hero_search_state.dart'; // BLoC class HeroSearchBloc extends Bloc { final List allHeroes; HeroSearchBloc({required this.allHeroes}) : super(HeroSearchInitial()) { print('HeroSearchBloc initialized with heroes: ${allHeroes.map((hero) => hero.name).toList()}'); on((event, emit) { print('Search query: ${event.query}'); if (event.query.isEmpty) { emit(HeroSearchInitial()); return; } final queryLower = event.query.toLowerCase().trim(); final filteredHeroes = allHeroes.where((hero) { final nameLower = hero.name.toLowerCase().trim(); print('Comparing "$queryLower" with "$nameLower"'); return nameLower.contains(queryLower); }).toList(); if (filteredHeroes.isEmpty) { print('No heroes found for query: ${event.query}'); emit(HeroSearchError('No heroes found.')); } else { print('Heroes found: ${filteredHeroes.map((hero) => hero.name).toList()}'); emit(HeroSearchLoaded(filteredHeroes)); } }); } }