|
3 | 3 |
|
4 | 4 | import 'package:flutter/material.dart';
|
5 | 5 | import 'package:flutter_bloc/flutter_bloc.dart';
|
6 |
| -import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart'; |
| 6 | +import 'package:go_router/go_router.dart'; // Import GoRouter for navigation |
| 7 | +import 'package:ht_main/app/bloc/app_bloc.dart'; // Import AppBloc for settings |
| 8 | +// HeadlineItemWidget import removed |
7 | 9 | import 'package:ht_main/headlines-search/bloc/headlines_search_bloc.dart';
|
8 |
| -import 'package:ht_main/headlines-search/models/search_model_type.dart'; // Import SearchModelType |
| 10 | +import 'package:ht_main/headlines-search/models/search_model_type.dart'; |
9 | 11 | // Import new item widgets
|
10 | 12 | import 'package:ht_main/headlines-search/widgets/category_item_widget.dart';
|
11 | 13 | import 'package:ht_main/headlines-search/widgets/country_item_widget.dart';
|
12 | 14 | import 'package:ht_main/headlines-search/widgets/source_item_widget.dart';
|
13 | 15 | import 'package:ht_main/l10n/l10n.dart';
|
14 |
| -import 'package:ht_main/router/routes.dart'; // Import Routes |
15 |
| -import 'package:ht_main/shared/constants/app_spacing.dart'; // Import AppSpacing |
16 |
| -import 'package:ht_main/shared/widgets/failure_state_widget.dart'; |
17 |
| -import 'package:ht_main/shared/widgets/initial_state_widget.dart'; |
18 |
| -import 'package:ht_shared/ht_shared.dart'; // Import shared models |
| 16 | +import 'package:ht_main/router/routes.dart'; |
| 17 | +import 'package:ht_main/shared/constants/app_spacing.dart'; |
| 18 | +import 'package:ht_main/shared/shared.dart'; // Imports new headline tiles |
| 19 | +import 'package:ht_shared/ht_shared.dart'; |
| 20 | + |
19 | 21 |
|
20 | 22 | /// Page widget responsible for providing the BLoC for the headlines search feature.
|
21 | 23 | class HeadlinesSearchPage extends StatelessWidget {
|
@@ -274,10 +276,47 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> {
|
274 | 276 | final item = results[index];
|
275 | 277 | switch (resultsModelType) {
|
276 | 278 | case SearchModelType.headline:
|
277 |
| - return HeadlineItemWidget( |
278 |
| - headline: item as Headline, |
279 |
| - targetRouteName: Routes.searchArticleDetailsName, |
280 |
| - ); |
| 279 | + final headline = item as Headline; |
| 280 | + final imageStyle = context |
| 281 | + .watch<AppBloc>() |
| 282 | + .state |
| 283 | + .settings |
| 284 | + .feedPreferences |
| 285 | + .headlineImageStyle; |
| 286 | + Widget tile; |
| 287 | + switch (imageStyle) { |
| 288 | + case HeadlineImageStyle.hidden: |
| 289 | + tile = HeadlineTileTextOnly( |
| 290 | + headline: headline, |
| 291 | + onHeadlineTap: () => context.goNamed( |
| 292 | + Routes.searchArticleDetailsName, |
| 293 | + pathParameters: {'id': headline.id}, |
| 294 | + extra: headline, |
| 295 | + ), |
| 296 | + ); |
| 297 | + break; |
| 298 | + case HeadlineImageStyle.smallThumbnail: |
| 299 | + tile = HeadlineTileImageStart( |
| 300 | + headline: headline, |
| 301 | + onHeadlineTap: () => context.goNamed( |
| 302 | + Routes.searchArticleDetailsName, |
| 303 | + pathParameters: {'id': headline.id}, |
| 304 | + extra: headline, |
| 305 | + ), |
| 306 | + ); |
| 307 | + break; |
| 308 | + case HeadlineImageStyle.largeThumbnail: |
| 309 | + tile = HeadlineTileImageTop( |
| 310 | + headline: headline, |
| 311 | + onHeadlineTap: () => context.goNamed( |
| 312 | + Routes.searchArticleDetailsName, |
| 313 | + pathParameters: {'id': headline.id}, |
| 314 | + extra: headline, |
| 315 | + ), |
| 316 | + ); |
| 317 | + break; |
| 318 | + } |
| 319 | + return tile; |
281 | 320 | case SearchModelType.category:
|
282 | 321 | return CategoryItemWidget(category: item as Category);
|
283 | 322 | case SearchModelType.source:
|
|
0 commit comments