From e7144669718c503ad4c89564f3e9ebf9e8901da9 Mon Sep 17 00:00:00 2001 From: fulleni Date: Fri, 30 May 2025 03:35:24 +0100 Subject: [PATCH 1/5] refactor(search): navigate to article details - Added target route to item widget --- lib/headlines-search/view/headlines_search_page.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/headlines-search/view/headlines_search_page.dart b/lib/headlines-search/view/headlines_search_page.dart index ce9bc380..335e116d 100644 --- a/lib/headlines-search/view/headlines_search_page.dart +++ b/lib/headlines-search/view/headlines_search_page.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart'; +import 'package:ht_main/router/routes.dart'; // Import Routes import 'package:ht_main/headlines-search/bloc/headlines_search_bloc.dart'; import 'package:ht_main/l10n/l10n.dart'; import 'package:ht_main/shared/constants/app_spacing.dart'; // Import AppSpacing @@ -216,7 +217,10 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> { ); } // Display headline item - return HeadlineItemWidget(headline: headlines[index]); + return HeadlineItemWidget( + headline: headlines[index], + targetRouteName: Routes.searchArticleDetailsName, + ); }, ), // Default case (should ideally not be reached if states are handled) From 65277132497f3b53b2687a8ff109f5c126ce14b6 Mon Sep 17 00:00:00 2001 From: fulleni Date: Fri, 30 May 2025 03:35:35 +0100 Subject: [PATCH 2/5] refactor: Add route for search article details - Added searchArticleDetailsName - Allows direct navigation --- lib/router/routes.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/router/routes.dart b/lib/router/routes.dart index 8e9f8ae5..58744860 100644 --- a/lib/router/routes.dart +++ b/lib/router/routes.dart @@ -25,6 +25,8 @@ abstract final class Routes { // --- Sub Routes --- // Article details is now relative to feed static const articleDetailsName = 'articleDetails'; + // Add a new name for article details when accessed from search + static const searchArticleDetailsName = 'searchArticleDetails'; // Settings is now relative to account static const settings = 'settings'; // Relative path static const settingsName = 'settings'; From 1eec04220c7b09651a9f3a7886a93a736127de72 Mon Sep 17 00:00:00 2001 From: fulleni Date: Fri, 30 May 2025 03:35:44 +0100 Subject: [PATCH 3/5] chore(router): add article details route to search - Added sub-route for article details - Integrated HeadlineDetailsBloc - Passed headlineId to the page --- lib/router/router.dart | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/router/router.dart b/lib/router/router.dart index 92473519..52acb83f 100644 --- a/lib/router/router.dart +++ b/lib/router/router.dart @@ -444,6 +444,24 @@ GoRouter createRouter({ path: Routes.search, // '/search' name: Routes.searchName, builder: (context, state) => const HeadlinesSearchPage(), + routes: [ + // Sub-route for article details from search + GoRoute( + path: 'article/:id', // Relative path + name: Routes.searchArticleDetailsName, // New route name + builder: (context, state) { + final id = state.pathParameters['id']!; + return BlocProvider( + create: + (context) => HeadlineDetailsBloc( + headlinesRepository: + context.read>(), + )..add(HeadlineDetailsRequested(headlineId: id)), + child: HeadlineDetailsPage(headlineId: id), + ); + }, + ), + ], ), ], ), From f57ed008c795e692512b2f43b1d3607a972bba1e Mon Sep 17 00:00:00 2001 From: fulleni Date: Fri, 30 May 2025 03:35:56 +0100 Subject: [PATCH 4/5] refactor: navigate to named route on tap - Added targetRouteName parameter - Used targetRouteName in onTap --- lib/headlines-feed/widgets/headline_item_widget.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/headlines-feed/widgets/headline_item_widget.dart b/lib/headlines-feed/widgets/headline_item_widget.dart index cb27b0cb..f48cb161 100644 --- a/lib/headlines-feed/widgets/headline_item_widget.dart +++ b/lib/headlines-feed/widgets/headline_item_widget.dart @@ -8,11 +8,18 @@ import 'package:intl/intl.dart'; // For date formatting /// A widget that displays a single headline with enhanced styling. class HeadlineItemWidget extends StatelessWidget { /// Creates a [HeadlineItemWidget]. - const HeadlineItemWidget({required this.headline, super.key}); + const HeadlineItemWidget({ + required this.headline, + required this.targetRouteName, // Add targetRouteName + super.key, + }); /// The headline to display. final Headline headline; + /// The named route to navigate to when the item is tapped. + final String targetRouteName; // Add targetRouteName + // Helper for date formatting static final _dateFormatter = DateFormat.yMd().add_jm(); @@ -38,7 +45,7 @@ class HeadlineItemWidget extends StatelessWidget { child: InkWell( onTap: () { context.goNamed( - Routes.articleDetailsName, + targetRouteName, // Use the new parameter here pathParameters: {'id': headline.id}, ); }, From e2634f8a5e47e25c7d31a883f756365b1b25d8c4 Mon Sep 17 00:00:00 2001 From: fulleni Date: Fri, 30 May 2025 03:36:07 +0100 Subject: [PATCH 5/5] refactor(feed): navigate to article details - Added target route to item widget - Navigates to article details --- lib/headlines-feed/view/headlines_feed_page.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/headlines-feed/view/headlines_feed_page.dart b/lib/headlines-feed/view/headlines_feed_page.dart index 11cd8949..dd617eaf 100644 --- a/lib/headlines-feed/view/headlines_feed_page.dart +++ b/lib/headlines-feed/view/headlines_feed_page.dart @@ -216,7 +216,10 @@ class _HeadlinesFeedPageState extends State { } // Otherwise, build the headline item final headline = state.headlines[index]; - return HeadlineItemWidget(headline: headline); + return HeadlineItemWidget( + headline: headline, + targetRouteName: Routes.articleDetailsName, + ); }, ), );