File tree Expand file tree Collapse file tree 12 files changed +430
-79
lines changed Expand file tree Collapse file tree 12 files changed +430
-79
lines changed Original file line number Diff line number Diff line change 11import 'package:dio/dio.dart' ;
2+ import 'package:flutter_movie_clean_architecture/features/movie/data/models/artist_detail_model.dart' ;
23import 'package:flutter_movie_clean_architecture/features/movie/data/models/credit_model.dart' ;
34import 'package:flutter_movie_clean_architecture/features/movie/data/models/movie_detail_model.dart' ;
45import 'package:flutter_movie_clean_architecture/features/movie/data/models/movie_model.dart' ;
@@ -58,16 +59,21 @@ class MovieRemoteDataSource {
5859 .map ((e) => MovieModel .fromJson (e))
5960 .toList ();
6061 }
62+
6163 Future <List <MovieModel >> getRecommendedMovie (int movieId) async {
62- final response =
63- await dio.get ('movie/$movieId /recommendations' );
64+ final response = await dio.get ('movie/$movieId /recommendations' );
6465 return (response.data['results' ] as List )
6566 .map ((e) => MovieModel .fromJson (e))
6667 .toList ();
6768 }
68- Future <Credit > getMovieCredits (int movieId) async {
69- final response =
70- await dio.get ('movie/$movieId /credits' );
71- return Credit .fromJson (response.data as Map <String , dynamic >);
69+
70+ Future <CreditModel > getMovieCredits (int movieId) async {
71+ final response = await dio.get ('movie/$movieId /credits' );
72+ return CreditModel .fromJson (response.data as Map <String , dynamic >);
73+ }
74+
75+ Future <ArtistDetailModel > getArtistDetail (int artistId) async {
76+ final response = await dio.get ('person/$artistId ' );
77+ return ArtistDetailModel .fromJson (response.data as Map <String , dynamic >);
7278 }
7379}
Original file line number Diff line number Diff line change 1+ import 'package:freezed_annotation/freezed_annotation.dart' ;
2+
3+ part 'artist_detail_model.freezed.dart' ;
4+ part 'artist_detail_model.g.dart' ;
5+
6+ @freezed
7+ class ArtistDetailModel with _$ArtistDetailModel {
8+ const factory ArtistDetailModel ({
9+ required bool adult,
10+ @JsonKey (name: 'also_known_as' ) required List <String > alsoKnownAs,
11+ required String biography,
12+ String ? birthday,
13+ String ? deathday,
14+ required int gender,
15+ String ? homepage,
16+ required int id,
17+ @JsonKey (name: 'imdb_id' ) String ? imdbId,
18+ @JsonKey (name: 'known_for_department' ) required String knownForDepartment,
19+ required String name,
20+ @JsonKey (name: 'place_of_birth' ) String ? placeOfBirth,
21+ required double popularity,
22+ @JsonKey (name: 'profile_path' ) String ? profilePath,
23+ }) = _ArtistDetailModel ;
24+
25+ factory ArtistDetailModel .fromJson (Map <String , dynamic > json) =>
26+ _$ArtistDetailModelFromJson (json);
27+ }
Original file line number Diff line number Diff line change @@ -4,14 +4,14 @@ part 'credit_model.freezed.dart';
44part 'credit_model.g.dart' ;
55
66@freezed
7- class Credit with _$Credit {
8- const factory Credit ({
7+ class CreditModel with _$CreditModel {
8+ const factory CreditModel ({
99 required int id,
1010 List <Cast >? cast,
1111 List <Crew >? crew,
12- }) = _Credit ;
12+ }) = _CreditModel ;
1313
14- factory Credit .fromJson (Map <String , dynamic > json) => _$CreditFromJson (json);
14+ factory CreditModel .fromJson (Map <String , dynamic > json) => _$CreditModelFromJson (json);
1515}
1616
1717@freezed
Original file line number Diff line number Diff line change 11import 'package:flutter_movie_clean_architecture/features/movie/data/datasources/movie_remote_data_source.dart' ;
22import 'package:flutter_movie_clean_architecture/features/movie/data/models/credit_model.dart' ;
3+ import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/ArtistDetail.dart' ;
34import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/movie.dart' ;
45import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/movie_detail.dart' ;
56import 'package:flutter_movie_clean_architecture/features/movie/domain/repositories/entities/movie_repository.dart' ;
@@ -109,12 +110,26 @@ class MovieRepositoryImpl implements MovieRepository {
109110 }
110111
111112 @override
112- Future <Credit > getMovieCredits (int movieId) async {
113+ Future <CreditModel > getMovieCredits (int movieId) async {
113114 final model = await remoteDataSource.getMovieCredits (movieId);
114- return Credit (
115+ return CreditModel (
115116 id: model.id,
116117 cast: model.cast,
117118 crew: model.crew,
118119 );
119120 }
121+
122+ @override
123+ Future <Artistdetail > getArtistDetail (int artistId) async {
124+ final model = await remoteDataSource.getArtistDetail (artistId);
125+ return Artistdetail (
126+ id: model.id,
127+ name: model.name,
128+ profilePath: model.profilePath,
129+ biography: model.biography,
130+ knownForDepartment: model.knownForDepartment,
131+ placeOfBirth: model.placeOfBirth ?? '' ,
132+ birthday: model.birthday ?? '' ,
133+ );
134+ }
120135}
Original file line number Diff line number Diff line change 1+ class Artistdetail {
2+ final int id;
3+ final String name;
4+ final String ? profilePath;
5+ final String biography;
6+ final String knownForDepartment;
7+ final String placeOfBirth;
8+ final String birthday;
9+
10+ Artistdetail ({
11+ required this .id,
12+ required this .name,
13+ required this .profilePath,
14+ required this .biography,
15+ required this .knownForDepartment,
16+ required this .placeOfBirth,
17+ required this .birthday,
18+ });
19+ }
Original file line number Diff line number Diff line change 11import 'package:flutter_movie_clean_architecture/features/movie/data/models/credit_model.dart' ;
2+ import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/ArtistDetail.dart' ;
23import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/movie.dart' ;
34import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/movie_detail.dart' ;
45
@@ -10,5 +11,6 @@ abstract class MovieRepository {
1011 Future <MovieDetail > getMovieDetail (int movieId);
1112 Future <List <Movie >> getMovieSearch (String query);
1213 Future <List <Movie >> getRecommendedMovie (int movieId);
13- Future <Credit > getMovieCredits (int movieId);
14+ Future <CreditModel > getMovieCredits (int movieId);
15+ Future <Artistdetail > getArtistDetail (int artistId);
1416}
Original file line number Diff line number Diff line change 1+ import 'package:flutter_movie_clean_architecture/features/movie/domain/entities/ArtistDetail.dart' ;
2+ import 'package:flutter_movie_clean_architecture/features/movie/domain/repositories/entities/movie_repository.dart' ;
3+
4+ class GetArtistDetail {
5+ final MovieRepository repository;
6+
7+ GetArtistDetail (this .repository);
8+
9+ Future <Artistdetail > call (int artistId) =>
10+ repository.getArtistDetail (artistId);
11+ }
Original file line number Diff line number Diff line change @@ -6,5 +6,5 @@ class GetMovieCredits {
66
77 GetMovieCredits (this .repository);
88
9- Future <Credit > call (int movieId) => repository.getMovieCredits (movieId);
9+ Future <CreditModel > call (int movieId) => repository.getMovieCredits (movieId);
1010}
You can’t perform that action at this time.
0 commit comments