import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/cart_provider.dart'; import '../providers/user_provider.dart'; import '../services/analytics_service.dart'; import 'home_screen.dart'; import 'categories_screen.dart'; import 'cart_screen.dart'; import 'profile_screen.dart'; import 'login_screen.dart'; class MainNavigationScreen extends StatefulWidget { const MainNavigationScreen({super.key}); @override State createState() => _MainNavigationScreenState(); } class _MainNavigationScreenState extends State { int _currentIndex = 0; final List _screens = [ const HomeScreen(), const CategoriesScreen(), const CartScreen(), const ProfileScreen(), ]; @override void initState() { super.initState(); // Track initial page view AnalyticsService.trackPageView('/home'); } void _onTabTapped(int index) { setState(() { _currentIndex = index; }); // Track page views switch (index) { case 0: AnalyticsService.trackPageView('/home'); break; case 1: AnalyticsService.trackPageView('/categories'); break; case 2: AnalyticsService.trackPageView('/cart'); break; case 3: AnalyticsService.trackPageView('/profile'); break; } } @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack( index: _currentIndex, children: _screens, ), bottomNavigationBar: Consumer2( builder: (context, cart, userProvider, child) { return NavigationBar( selectedIndex: _currentIndex, onDestinationSelected: _onTabTapped, destinations: [ const NavigationDestination( icon: Icon(Icons.home_outlined), selectedIcon: Icon(Icons.home), label: 'Home', ), const NavigationDestination( icon: Icon(Icons.category_outlined), selectedIcon: Icon(Icons.category), label: 'Kategorien', ), NavigationDestination( icon: Stack( children: [ const Icon(Icons.shopping_cart_outlined), if (cart.itemCount > 0) Positioned( right: 0, top: 0, child: Container( padding: const EdgeInsets.all(4), decoration: const BoxDecoration( color: Colors.red, shape: BoxShape.circle, ), constraints: const BoxConstraints( minWidth: 16, minHeight: 16, ), child: Text( '${cart.itemCount}', style: const TextStyle( color: Colors.white, fontSize: 10, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, ), ), ), ], ), selectedIcon: Stack( children: [ const Icon(Icons.shopping_cart), if (cart.itemCount > 0) Positioned( right: 0, top: 0, child: Container( padding: const EdgeInsets.all(4), decoration: const BoxDecoration( color: Colors.red, shape: BoxShape.circle, ), constraints: const BoxConstraints( minWidth: 16, minHeight: 16, ), child: Text( '${cart.itemCount}', style: const TextStyle( color: Colors.white, fontSize: 10, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, ), ), ), ], ), label: 'Warenkorb', ), NavigationDestination( icon: Icon( userProvider.isLoggedIn ? Icons.account_circle_outlined : Icons.login_outlined, ), selectedIcon: Icon( userProvider.isLoggedIn ? Icons.account_circle : Icons.login, ), label: userProvider.isLoggedIn ? 'Profil' : 'Anmelden', ), ], ); }, ), ); } }