import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:pmu/data/repositories/cats_repository.dart'; import 'package:pmu/presentation/home_page/bloc/events.dart'; import 'package:pmu/presentation/home_page/bloc/state.dart'; import '../../../domain/models/home.dart'; class HomeBloc extends Bloc { final CatsRepository repo; HomeBloc(this.repo) : super(const HomeState()) { on(_onLoadData); } Future _onLoadData(HomeLoadDataEvent event, Emitter emit) async { if (event.nextPage == 0) { emit(state.copyWith(isLoading: true)); } else { emit(state.copyWith(isPaginationLoading: true)); } String? error; final data = await repo.loadData( q: event.search, offset: event.nextPage ?? 0, onError: (e) => error = e, ); final updatedData = event.nextPage != null && data != null ? HomeData( data: [...state.data?.data ?? [], ...data.data!], nextPage: (event.nextPage! + 1), ) : data; emit(state.copyWith( isLoading: false, isPaginationLoading: false, data: updatedData, error: error, )); } }