added community screen as placeholder for now

master
gitea 2 months ago
parent 39567bbd92
commit 75901f4e2b

@ -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<MainNavigationScaffold> {
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<MainNavigationScaffold> {
});
}
/// 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<MainNavigationScaffold> {
: 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<MainNavigationScaffold> {
// 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<MainNavigationScaffold> {
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),
),
],
),
),

@ -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<RecipesScreen> {
});
},
),
IconButton(
icon: const Icon(Icons.favorite),
onPressed: () {
// Navigate to Favourites screen
final scaffold = context.findAncestorStateOfType<MainNavigationScaffoldState>();
scaffold?.navigateToFavourites();
},
tooltip: 'Favourites',
),
IconButton(
icon: Icon(_isMinimalView ? Icons.grid_view : Icons.view_list),
onPressed: () async {

Loading…
Cancel
Save

Powered by TurnKey Linux.