import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:skripsi_getit/data/model/movie.dart'; import 'package:skripsi_getit/data/state/movie_state.dart'; import 'package:skripsi_getit/services/repository/search_repository.dart'; class SearchMovieCubit extends Cubit { final SearchRepository searchRepository; SearchMovieCubit(this.searchRepository) : super(MovieState()); int currentPage = 1; void clearSearchResults() { emit(MovieState()); } Future fetchSearchMovies(String query) async { if (state.isLoading || !state.hasMoreData) return; emit(state.copyWith(isLoading: true)); try { final newMovies = await searchRepository.searchMovie(query, currentPage); final updatedMovies = List.from(state.movies) ..addAll(newMovies.results!); emit( state.copyWith( isLoading: false, movies: updatedMovies, hasMoreData: newMovies.results!.length >= 10, ), ); currentPage++; } catch (error) { emit(state.copyWith(isLoading: false, errorMessage: error.toString())); } } void reset() { currentPage = 1; emit(MovieState.initial()); } }