Line data Source code
1 : import 'dart:async'; 2 : 3 : import 'package:tech_proof/core/error/logger_service.dart'; 4 : import 'package:tech_proof/data/repositories/movies_repository_imp.dart'; 5 : import 'package:tech_proof/domain/entities/movie_entity.dart'; 6 : import 'package:flutter_bloc/flutter_bloc.dart'; 7 : import 'package:equatable/equatable.dart'; 8 : 9 : part 'movie_detail_event.dart'; 10 : part 'movie_detail_state.dart'; 11 : 12 : class MovieDetailBloc extends Bloc<MovieDetailEvent, MovieDetailState> { 13 : final MovieRepositoryImpl movieRepository; 14 : final int movieId; 15 1 : MovieDetailBloc({required this.movieRepository, required this.movieId}) 16 2 : : super(MovieDetailInitial()) { 17 2 : on<MovieDetailEvent>((event, emit) {}); 18 2 : on<MovieDetailInit>(_movieDetailInit); 19 : } 20 : 21 1 : FutureOr<void> _movieDetailInit( 22 : MovieDetailInit event, 23 : Emitter<MovieDetailState> emit, 24 : ) async { 25 2 : emit(MovieDetailLoading()); 26 : 27 3 : final movieDetail = await movieRepository.getMovie(id: movieId); 28 : 29 2 : movieDetail.fold((l) { 30 1 : LoggerService.error("MovieDetailBloc", 'Failed to fetch movie details'); 31 2 : emit(MovieDetailError(message: 'Failed to fetch movie details')); 32 3 : }, (r) => emit(MovieDetailLoaded(r))); 33 : } 34 : }