Skip to content

Commit fc0f4d6

Browse files
committed
feat(feed): use tiles based on settings
- Removed HeadlineItemWidget - Added image style settings - Added HeadlineTile variations
1 parent c6d9bd4 commit fc0f4d6

File tree

1 file changed

+46
-6
lines changed

1 file changed

+46
-6
lines changed

lib/headlines-feed/view/headlines_feed_page.dart

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ import 'package:flutter_bloc/flutter_bloc.dart';
66
import 'package:go_router/go_router.dart';
77
// Import Category
88
// Import Country
9+
import 'package:flutter_bloc/flutter_bloc.dart';
10+
import 'package:go_router/go_router.dart';
11+
import 'package:ht_main/app/bloc/app_bloc.dart'; // Added to access settings
912
import 'package:ht_main/headlines-feed/bloc/headlines_feed_bloc.dart';
10-
import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart';
13+
// HeadlineItemWidget import removed
1114
import 'package:ht_main/l10n/l10n.dart';
1215
import 'package:ht_main/router/routes.dart';
1316
import 'package:ht_main/shared/shared.dart';
14-
// Import Source
17+
import 'package:ht_shared/ht_shared.dart' show Headline, HeadlineImageStyle; // Added HeadlineImageStyle
1518

1619
/// {@template headlines_feed_view}
1720
/// The core view widget for the headlines feed.
@@ -216,10 +219,47 @@ class _HeadlinesFeedPageState extends State<HeadlinesFeedPage> {
216219
}
217220
// Otherwise, build the headline item
218221
final headline = state.headlines[index];
219-
return HeadlineItemWidget(
220-
headline: headline,
221-
targetRouteName: Routes.articleDetailsName,
222-
);
222+
final imageStyle = context
223+
.watch<AppBloc>()
224+
.state
225+
.settings
226+
.feedPreferences
227+
.headlineImageStyle;
228+
229+
Widget tile;
230+
switch (imageStyle) {
231+
case HeadlineImageStyle.hidden:
232+
tile = HeadlineTileTextOnly(
233+
headline: headline,
234+
onHeadlineTap: () => context.goNamed(
235+
Routes.articleDetailsName,
236+
pathParameters: {'id': headline.id},
237+
extra: headline,
238+
),
239+
);
240+
break;
241+
case HeadlineImageStyle.smallThumbnail:
242+
tile = HeadlineTileImageStart(
243+
headline: headline,
244+
onHeadlineTap: () => context.goNamed(
245+
Routes.articleDetailsName,
246+
pathParameters: {'id': headline.id},
247+
extra: headline,
248+
),
249+
);
250+
break;
251+
case HeadlineImageStyle.largeThumbnail:
252+
tile = HeadlineTileImageTop(
253+
headline: headline,
254+
onHeadlineTap: () => context.goNamed(
255+
Routes.articleDetailsName,
256+
pathParameters: {'id': headline.id},
257+
extra: headline,
258+
),
259+
);
260+
break;
261+
}
262+
return tile;
223263
},
224264
),
225265
);

0 commit comments

Comments
 (0)