File tree Expand file tree Collapse file tree 5 files changed +297
-250
lines changed
Expand file tree Collapse file tree 5 files changed +297
-250
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22import 'package:flutter_bloc/flutter_bloc.dart' ;
33import 'package:tmdb_flutter/app/cubit/favorite_movies_cubit.dart' ;
44import 'package:tmdb_flutter/app/cubit/home_cubit.dart' ;
5+ import 'package:tmdb_flutter/app/cubit/movie_details_cubit.dart' ;
56import 'package:tmdb_flutter/app/injection.dart' ;
67import 'package:tmdb_flutter/app/view/main_page.dart' ;
78
@@ -18,6 +19,9 @@ class App extends StatelessWidget {
1819 BlocProvider (
1920 create: (context) => getIt <FavoriteMoviesCubit >(),
2021 ),
22+ BlocProvider (
23+ create: (context) => getIt <MovieDetailsCubit >(),
24+ ),
2125 ],
2226 child: MaterialApp (
2327 title: 'TMDB Movies' ,
Original file line number Diff line number Diff line change 1+ import 'package:flutter_bloc/flutter_bloc.dart' ;
2+ import 'package:tmdb_flutter/app/data/repository/movies_repository.dart' ;
3+ import 'package:tmdb_flutter/app/cubit/movie_details_state.dart' ;
4+
5+ class MovieDetailsCubit extends Cubit <MovieDetailsState > {
6+ MovieDetailsCubit (this ._repository) : super (MovieDetailsInitial ());
7+
8+ final MoviesRepository _repository;
9+
10+ Future <void > loadMovieDetails (int movieId) async {
11+ try {
12+ emit (MovieDetailsLoading ());
13+ final movieDetails = await _repository.getMovieDetails (movieId);
14+ final credits = await _repository.getMovieCredits (movieId);
15+ emit (MovieDetailsLoaded (
16+ movieDetails: movieDetails,
17+ credits: credits,
18+ ));
19+ } catch (e) {
20+ emit (MovieDetailsError (e.toString ()));
21+ }
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ import 'package:equatable/equatable.dart' ;
2+ import 'package:tmdb_flutter/app/data/remote/models/movie_responses.dart' ;
3+
4+ abstract class MovieDetailsState extends Equatable {
5+ const MovieDetailsState ();
6+
7+ @override
8+ List <Object ?> get props => [];
9+ }
10+
11+ class MovieDetailsInitial extends MovieDetailsState {}
12+
13+ class MovieDetailsLoading extends MovieDetailsState {}
14+
15+ class MovieDetailsLoaded extends MovieDetailsState {
16+ const MovieDetailsLoaded ({
17+ required this .movieDetails,
18+ required this .credits,
19+ });
20+
21+ final MovieDetailsResponse movieDetails;
22+ final CreditsResponse credits;
23+
24+ @override
25+ List <Object ?> get props => [movieDetails, credits];
26+ }
27+
28+ class MovieDetailsError extends MovieDetailsState {
29+ const MovieDetailsError (this .message);
30+
31+ final String message;
32+
33+ @override
34+ List <Object ?> get props => [message];
35+ }
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import 'package:tmdb_flutter/app/data/local/database_helper.dart';
66import 'package:tmdb_flutter/app/data/local/favorite_movies_local_data_source.dart' ;
77import 'package:tmdb_flutter/app/data/remote/movie_api.dart' ;
88import 'package:tmdb_flutter/app/data/repository/movies_repository.dart' ;
9+ import 'package:tmdb_flutter/app/cubit/movie_details_cubit.dart' ;
910
1011final getIt = GetIt .instance;
1112
@@ -31,5 +32,6 @@ Future<void> configureDependencies() async {
3132 )
3233 ..registerFactory <FavoriteMoviesCubit >(
3334 () => FavoriteMoviesCubit (getIt <MoviesRepository >()),
34- );
35+ )
36+ ..registerFactory (() => MovieDetailsCubit (getIt ()));
3537}
You can’t perform that action at this time.
0 commit comments