Skip to content

Commit 82daee5

Browse files
authored
Merge pull request #21 from headlines-toolkit/search_page_routing_bug
Search page routing bug
2 parents 2b51da9 + e2634f8 commit 82daee5

File tree

5 files changed

+38
-4
lines changed

5 files changed

+38
-4
lines changed

lib/headlines-feed/view/headlines_feed_page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,10 @@ class _HeadlinesFeedPageState extends State<HeadlinesFeedPage> {
216216
}
217217
// Otherwise, build the headline item
218218
final headline = state.headlines[index];
219-
return HeadlineItemWidget(headline: headline);
219+
return HeadlineItemWidget(
220+
headline: headline,
221+
targetRouteName: Routes.articleDetailsName,
222+
);
220223
},
221224
),
222225
);

lib/headlines-feed/widgets/headline_item_widget.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ import 'package:intl/intl.dart'; // For date formatting
88
/// A widget that displays a single headline with enhanced styling.
99
class HeadlineItemWidget extends StatelessWidget {
1010
/// 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+
});
1216

1317
/// The headline to display.
1418
final Headline headline;
1519

20+
/// The named route to navigate to when the item is tapped.
21+
final String targetRouteName; // Add targetRouteName
22+
1623
// Helper for date formatting
1724
static final _dateFormatter = DateFormat.yMd().add_jm();
1825

@@ -38,7 +45,7 @@ class HeadlineItemWidget extends StatelessWidget {
3845
child: InkWell(
3946
onTap: () {
4047
context.goNamed(
41-
Routes.articleDetailsName,
48+
targetRouteName, // Use the new parameter here
4249
pathParameters: {'id': headline.id},
4350
);
4451
},

lib/headlines-search/view/headlines_search_page.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import 'package:flutter/material.dart';
55
import 'package:flutter_bloc/flutter_bloc.dart';
66
import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart';
7+
import 'package:ht_main/router/routes.dart'; // Import Routes
78
import 'package:ht_main/headlines-search/bloc/headlines_search_bloc.dart';
89
import 'package:ht_main/l10n/l10n.dart';
910
import 'package:ht_main/shared/constants/app_spacing.dart'; // Import AppSpacing
@@ -216,7 +217,10 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> {
216217
);
217218
}
218219
// Display headline item
219-
return HeadlineItemWidget(headline: headlines[index]);
220+
return HeadlineItemWidget(
221+
headline: headlines[index],
222+
targetRouteName: Routes.searchArticleDetailsName,
223+
);
220224
},
221225
),
222226
// Default case (should ideally not be reached if states are handled)

lib/router/router.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,24 @@ GoRouter createRouter({
444444
path: Routes.search, // '/search'
445445
name: Routes.searchName,
446446
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+
],
447465
),
448466
],
449467
),

lib/router/routes.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ abstract final class Routes {
2525
// --- Sub Routes ---
2626
// Article details is now relative to feed
2727
static const articleDetailsName = 'articleDetails';
28+
// Add a new name for article details when accessed from search
29+
static const searchArticleDetailsName = 'searchArticleDetails';
2830
// Settings is now relative to account
2931
static const settings = 'settings'; // Relative path
3032
static const settingsName = 'settings';

0 commit comments

Comments
 (0)