Skip to content

Commit 5d6767f

Browse files
committed
feat(search): use shared headline tiles
- Replaced specific item widget - Implemented shared headline tiles - Removed HeadlineItemWidget
1 parent 3f5a3c3 commit 5d6767f

File tree

1 file changed

+50
-11
lines changed

1 file changed

+50
-11
lines changed

lib/headlines-search/view/headlines_search_page.dart

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,21 @@
33

44
import 'package:flutter/material.dart';
55
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
79
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';
911
// Import new item widgets
1012
import 'package:ht_main/headlines-search/widgets/category_item_widget.dart';
1113
import 'package:ht_main/headlines-search/widgets/country_item_widget.dart';
1214
import 'package:ht_main/headlines-search/widgets/source_item_widget.dart';
1315
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+
1921

2022
/// Page widget responsible for providing the BLoC for the headlines search feature.
2123
class HeadlinesSearchPage extends StatelessWidget {
@@ -274,10 +276,47 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> {
274276
final item = results[index];
275277
switch (resultsModelType) {
276278
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;
281320
case SearchModelType.category:
282321
return CategoryItemWidget(category: item as Category);
283322
case SearchModelType.source:

0 commit comments

Comments
 (0)