Skip to content

Commit 3f5a3c3

Browse files
committed
feat(details): Use tiles for similar headlines
- Removed HeadlineItemWidget - Added AppBloc to access image style - Implemented Headline tiles
1 parent fc0f4d6 commit 3f5a3c3

File tree

1 file changed

+50
-17
lines changed

1 file changed

+50
-17
lines changed

lib/headline-details/view/headline_details_page.dart

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import 'package:flutter/foundation.dart' show kIsWeb; // Import kIsWeb
55
import 'package:flutter/material.dart';
66
import 'package:flutter_bloc/flutter_bloc.dart';
77
import 'package:go_router/go_router.dart'; // Import GoRouter
8-
import 'package:ht_main/account/bloc/account_bloc.dart'; // Import AccountBloc
9-
import 'package:ht_main/headline-details/bloc/headline_details_bloc.dart'; // Import BLoC
10-
import 'package:ht_main/headline-details/bloc/similar_headlines_bloc.dart'; // Import SimilarHeadlinesBloc
11-
import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart'; // Import HeadlineItemWidget
8+
import 'package:ht_main/account/bloc/account_bloc.dart';
9+
import 'package:ht_main/app/bloc/app_bloc.dart'; // Added AppBloc
10+
import 'package:ht_main/headline-details/bloc/headline_details_bloc.dart';
11+
import 'package:ht_main/headline-details/bloc/similar_headlines_bloc.dart';
12+
// HeadlineItemWidget import removed
1213
import 'package:ht_main/l10n/l10n.dart';
13-
import 'package:ht_main/router/routes.dart'; // Import Routes
14+
import 'package:ht_main/router/routes.dart';
1415
import 'package:ht_main/shared/shared.dart';
15-
import 'package:ht_shared/ht_shared.dart'
16-
show Headline; // Import Headline model
16+
import 'package:ht_shared/ht_shared.dart' show Headline, HeadlineImageStyle; // Added HeadlineImageStyle
1717
import 'package:intl/intl.dart';
1818
import 'package:share_plus/share_plus.dart'; // Import share_plus
1919
import 'package:url_launcher/url_launcher_string.dart';
@@ -490,17 +490,50 @@ class _HeadlineDetailsPageState extends State<HeadlineDetailsPage> {
490490
horizontal: AppSpacing.paddingMedium,
491491
vertical: AppSpacing.sm,
492492
),
493-
child: HeadlineItemWidget(
494-
headline: similarHeadline,
495-
// Use the onTap callback for navigation
496-
onTap: (tappedHeadline) {
497-
context.pushNamed(
498-
Routes.articleDetailsName,
499-
pathParameters: {'id': tappedHeadline.id},
500-
extra: tappedHeadline,
501-
);
493+
child: Builder(
494+
// Use Builder to get a new context that can watch AppBloc
495+
builder: (context) {
496+
final imageStyle = context
497+
.watch<AppBloc>()
498+
.state
499+
.settings
500+
.feedPreferences
501+
.headlineImageStyle;
502+
Widget tile;
503+
switch (imageStyle) {
504+
case HeadlineImageStyle.hidden:
505+
tile = HeadlineTileTextOnly(
506+
headline: similarHeadline,
507+
onHeadlineTap: () => context.pushNamed(
508+
Routes.articleDetailsName,
509+
pathParameters: {'id': similarHeadline.id},
510+
extra: similarHeadline,
511+
),
512+
);
513+
break;
514+
case HeadlineImageStyle.smallThumbnail:
515+
tile = HeadlineTileImageStart(
516+
headline: similarHeadline,
517+
onHeadlineTap: () => context.pushNamed(
518+
Routes.articleDetailsName,
519+
pathParameters: {'id': similarHeadline.id},
520+
extra: similarHeadline,
521+
),
522+
);
523+
break;
524+
case HeadlineImageStyle.largeThumbnail:
525+
tile = HeadlineTileImageTop(
526+
headline: similarHeadline,
527+
onHeadlineTap: () => context.pushNamed(
528+
Routes.articleDetailsName,
529+
pathParameters: {'id': similarHeadline.id},
530+
extra: similarHeadline,
531+
),
532+
);
533+
break;
534+
}
535+
return tile;
502536
},
503-
// targetRouteName: Routes.articleDetailsName, // No longer needed here
504537
),
505538
);
506539
}, childCount: loadedState.similarHeadlines.length),

0 commit comments

Comments
 (0)