From 75901f4e2be31c6a0eb36af8f33415bbf337a38f Mon Sep 17 00:00:00 2001 From: gitea Date: Thu, 13 Nov 2025 01:06:48 +0100 Subject: [PATCH] added community screen as placeholder for now --- .../navigation/main_navigation_scaffold.dart | 56 ++++++++++++------- lib/ui/recipes/recipes_screen.dart | 10 ++++ 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/lib/ui/navigation/main_navigation_scaffold.dart b/lib/ui/navigation/main_navigation_scaffold.dart index 4513fc2..f1bf5a1 100644 --- a/lib/ui/navigation/main_navigation_scaffold.dart +++ b/lib/ui/navigation/main_navigation_scaffold.dart @@ -6,6 +6,7 @@ import '../home/home_screen.dart'; import '../recipes/recipes_screen.dart'; import '../favourites/favourites_screen.dart'; import '../bookmarks/bookmarks_screen.dart'; +import '../community/community_screen.dart'; import '../session/session_screen.dart'; import 'app_router.dart'; @@ -71,8 +72,9 @@ class MainNavigationScaffoldState extends State { void _onItemTapped(int index) { final isLoggedIn = _isLoggedIn; - // Only allow navigation to Recipes (1), Favourites (2), and Bookmarks (4) if logged in - if (!isLoggedIn && (index == 1 || index == 2 || index == 4)) { + // Only allow navigation to Recipes (1) and Bookmarks (2) if logged in + // Community (4) and User (3) are always accessible + if (!isLoggedIn && (index == 1 || index == 2)) { // Redirect to User/Session tab to prompt login setState(() { _currentIndex = 3; // User/Session tab @@ -92,6 +94,23 @@ class MainNavigationScaffoldState extends State { }); } + /// Public method to navigate to Favourites screen (used from Recipes AppBar). + void navigateToFavourites() { + final isLoggedIn = _isLoggedIn; + if (!isLoggedIn) { + // Redirect to User/Session tab to prompt login + navigateToUser(); + return; + } + // Navigate to Favourites as a full-screen route + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const FavouritesScreen(), + ), + ); + } + void _onAddRecipePressed(BuildContext context) async { final isLoggedIn = _isLoggedIn; @@ -134,15 +153,14 @@ class MainNavigationScaffoldState extends State { : const ValueKey('recipes_logged_out'), ); case 2: - // Favourites - only show if logged in, otherwise show login prompt + // Bookmarks - only show if logged in // Use a key based on login state to force rebuild when login changes - return FavouritesScreen(key: ValueKey(_isLoggedIn)); + return BookmarksScreen(key: ValueKey(_isLoggedIn)); case 3: return SessionScreen(onSessionChanged: _onSessionChanged); case 4: - // Bookmarks - only show if logged in - // Use a key based on login state to force rebuild when login changes - return BookmarksScreen(key: ValueKey(_isLoggedIn)); + // Community - always accessible + return const CommunityScreen(); default: return const SizedBox(); } @@ -156,8 +174,9 @@ class MainNavigationScaffoldState extends State { // Check login state in build to trigger rebuilds _checkLoginState(); - // Ensure current index is valid (if logged out, don't allow Recipes/Favourites/Bookmarks) - if (!isLoggedIn && (_currentIndex == 1 || _currentIndex == 2 || _currentIndex == 4)) { + // Ensure current index is valid (if logged out, don't allow Recipes/Bookmarks) + // Community (4) and User (3) are always accessible + if (!isLoggedIn && (_currentIndex == 1 || _currentIndex == 2)) { WidgetsBinding.instance.addPostFrameCallback((_) { if (mounted) { setState(() { @@ -246,22 +265,21 @@ class MainNavigationScaffoldState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - // Favourites - only show if logged in - if (isLoggedIn) - _buildNavItem( - icon: Icons.favorite, - label: 'Favourites', - index: 2, - onTap: () => _onItemTapped(2), - ), // Bookmarks - only show if logged in if (isLoggedIn) _buildNavItem( icon: Icons.bookmark, label: 'Bookmarks', - index: 4, - onTap: () => _onItemTapped(4), + index: 2, + onTap: () => _onItemTapped(2), ), + // Community - always accessible + _buildNavItem( + icon: Icons.people, + label: 'Community', + index: 4, + onTap: () => _onItemTapped(4), + ), ], ), ), diff --git a/lib/ui/recipes/recipes_screen.dart b/lib/ui/recipes/recipes_screen.dart index 5cc9303..e629935 100644 --- a/lib/ui/recipes/recipes_screen.dart +++ b/lib/ui/recipes/recipes_screen.dart @@ -7,6 +7,7 @@ import '../../data/recipes/models/recipe_model.dart'; import '../../data/local/models/item.dart'; import '../add_recipe/add_recipe_screen.dart'; import '../photo_gallery/photo_gallery_screen.dart'; +import '../navigation/main_navigation_scaffold.dart'; import 'bookmark_dialog.dart'; import '../../data/recipes/models/bookmark_category_model.dart'; @@ -312,6 +313,15 @@ class _RecipesScreenState extends State { }); }, ), + IconButton( + icon: const Icon(Icons.favorite), + onPressed: () { + // Navigate to Favourites screen + final scaffold = context.findAncestorStateOfType(); + scaffold?.navigateToFavourites(); + }, + tooltip: 'Favourites', + ), IconButton( icon: Icon(_isMinimalView ? Icons.grid_view : Icons.view_list), onPressed: () async {