@@ -48,6 +48,9 @@ class HomePage extends StatelessWidget {
4848 }
4949
5050 if (state is HomeLoaded ) {
51+ final genres = state.genres.genres;
52+ final selectedGenreId = state.selectedGenreId;
53+
5154 return RefreshIndicator (
5255 onRefresh: () => context.read <HomeCubit >().refreshHomeData (),
5356 child: SingleChildScrollView (
@@ -107,12 +110,19 @@ class HomePage extends StatelessWidget {
107110 height: 36 ,
108111 child: ListView .builder (
109112 scrollDirection: Axis .horizontal,
110- itemCount: state.genres. genres.length,
113+ itemCount: genres.length,
111114 itemBuilder: (context, index) {
112- final genre = state.genres. genres[index];
115+ final genre = genres[index];
113116 return _CategoryChip (
114117 label: genre.name,
115- selected: index == 0 ,
118+ selected: genre.id == selectedGenreId,
119+ onSelected: (selected) {
120+ if (selected) {
121+ context
122+ .read <HomeCubit >()
123+ .selectGenre (genre.id);
124+ }
125+ },
116126 );
117127 },
118128 ),
@@ -131,9 +141,9 @@ class HomePage extends StatelessWidget {
131141 height: 240 ,
132142 child: ListView .builder (
133143 scrollDirection: Axis .horizontal,
134- itemCount: state.trendingMovies.results .length,
144+ itemCount: state.filteredTrending .length,
135145 itemBuilder: (context, index) {
136- final movie = state.trendingMovies.results [index];
146+ final movie = state.filteredTrending [index];
137147 return _MovieCard (
138148 movie: movie,
139149 borderColor: const Color (0xFFF9D949 ),
@@ -155,9 +165,9 @@ class HomePage extends StatelessWidget {
155165 height: 180 ,
156166 child: ListView .builder (
157167 scrollDirection: Axis .horizontal,
158- itemCount: state.popularMovies.results .length,
168+ itemCount: state.filteredPopular .length,
159169 itemBuilder: (context, index) {
160- final movie = state.popularMovies.results [index];
170+ final movie = state.filteredPopular [index];
161171 return _MovieCard (
162172 movie: movie,
163173 small: true ,
@@ -179,9 +189,9 @@ class HomePage extends StatelessWidget {
179189 height: 180 ,
180190 child: ListView .builder (
181191 scrollDirection: Axis .horizontal,
182- itemCount: state.upcomingMovies.results .length,
192+ itemCount: state.filteredUpcoming .length,
183193 itemBuilder: (context, index) {
184- final movie = state.upcomingMovies.results [index];
194+ final movie = state.filteredUpcoming [index];
185195 return _MovieCard (
186196 movie: movie,
187197 small: true ,
@@ -205,10 +215,12 @@ class HomePage extends StatelessWidget {
205215}
206216
207217class _CategoryChip extends StatelessWidget {
208- const _CategoryChip ({required this .label, this .selected = false });
218+ const _CategoryChip (
219+ {required this .label, this .selected = false , this .onSelected});
209220
210221 final String label;
211222 final bool selected;
223+ final ValueChanged <bool >? onSelected;
212224
213225 @override
214226 Widget build (BuildContext context) {
@@ -226,7 +238,7 @@ class _CategoryChip extends StatelessWidget {
226238 side: BorderSide (
227239 color: selected ? Colors .pinkAccent : Colors .black26,
228240 ),
229- onSelected: (_) {} ,
241+ onSelected: onSelected ,
230242 ),
231243 );
232244 }
0 commit comments