File tree Expand file tree Collapse file tree 5 files changed +38
-4
lines changed Expand file tree Collapse file tree 5 files changed +38
-4
lines changed Original file line number Diff line number Diff line change @@ -216,7 +216,10 @@ class _HeadlinesFeedPageState extends State<HeadlinesFeedPage> {
216
216
}
217
217
// Otherwise, build the headline item
218
218
final headline = state.headlines[index];
219
- return HeadlineItemWidget (headline: headline);
219
+ return HeadlineItemWidget (
220
+ headline: headline,
221
+ targetRouteName: Routes .articleDetailsName,
222
+ );
220
223
},
221
224
),
222
225
);
Original file line number Diff line number Diff line change @@ -8,11 +8,18 @@ import 'package:intl/intl.dart'; // For date formatting
8
8
/// A widget that displays a single headline with enhanced styling.
9
9
class HeadlineItemWidget extends StatelessWidget {
10
10
/// Creates a [HeadlineItemWidget] .
11
- const HeadlineItemWidget ({required this .headline, super .key});
11
+ const HeadlineItemWidget ({
12
+ required this .headline,
13
+ required this .targetRouteName, // Add targetRouteName
14
+ super .key,
15
+ });
12
16
13
17
/// The headline to display.
14
18
final Headline headline;
15
19
20
+ /// The named route to navigate to when the item is tapped.
21
+ final String targetRouteName; // Add targetRouteName
22
+
16
23
// Helper for date formatting
17
24
static final _dateFormatter = DateFormat .yMd ().add_jm ();
18
25
@@ -38,7 +45,7 @@ class HeadlineItemWidget extends StatelessWidget {
38
45
child: InkWell (
39
46
onTap: () {
40
47
context.goNamed (
41
- Routes .articleDetailsName,
48
+ targetRouteName, // Use the new parameter here
42
49
pathParameters: {'id' : headline.id},
43
50
);
44
51
},
Original file line number Diff line number Diff line change 4
4
import 'package:flutter/material.dart' ;
5
5
import 'package:flutter_bloc/flutter_bloc.dart' ;
6
6
import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart' ;
7
+ import 'package:ht_main/router/routes.dart' ; // Import Routes
7
8
import 'package:ht_main/headlines-search/bloc/headlines_search_bloc.dart' ;
8
9
import 'package:ht_main/l10n/l10n.dart' ;
9
10
import 'package:ht_main/shared/constants/app_spacing.dart' ; // Import AppSpacing
@@ -216,7 +217,10 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> {
216
217
);
217
218
}
218
219
// Display headline item
219
- return HeadlineItemWidget (headline: headlines[index]);
220
+ return HeadlineItemWidget (
221
+ headline: headlines[index],
222
+ targetRouteName: Routes .searchArticleDetailsName,
223
+ );
220
224
},
221
225
),
222
226
// Default case (should ideally not be reached if states are handled)
Original file line number Diff line number Diff line change @@ -444,6 +444,24 @@ GoRouter createRouter({
444
444
path: Routes .search, // '/search'
445
445
name: Routes .searchName,
446
446
builder: (context, state) => const HeadlinesSearchPage (),
447
+ routes: [
448
+ // Sub-route for article details from search
449
+ GoRoute (
450
+ path: 'article/:id' , // Relative path
451
+ name: Routes .searchArticleDetailsName, // New route name
452
+ builder: (context, state) {
453
+ final id = state.pathParameters['id' ]! ;
454
+ return BlocProvider (
455
+ create:
456
+ (context) => HeadlineDetailsBloc (
457
+ headlinesRepository:
458
+ context.read <HtDataRepository <Headline >>(),
459
+ )..add (HeadlineDetailsRequested (headlineId: id)),
460
+ child: HeadlineDetailsPage (headlineId: id),
461
+ );
462
+ },
463
+ ),
464
+ ],
447
465
),
448
466
],
449
467
),
Original file line number Diff line number Diff line change @@ -25,6 +25,8 @@ abstract final class Routes {
25
25
// --- Sub Routes ---
26
26
// Article details is now relative to feed
27
27
static const articleDetailsName = 'articleDetails' ;
28
+ // Add a new name for article details when accessed from search
29
+ static const searchArticleDetailsName = 'searchArticleDetails' ;
28
30
// Settings is now relative to account
29
31
static const settings = 'settings' ; // Relative path
30
32
static const settingsName = 'settings' ;
You can’t perform that action at this time.
0 commit comments