import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:environment_monitoring_app/auth_provider.dart'; import 'package:environment_monitoring_app/collapsible_sidebar.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @override State createState() => _HomePageState(); } class _HomePageState extends State { bool _isSidebarCollapsed = true; String _currentSelectedRoute = '/home'; @override Widget build(BuildContext context) { final auth = Provider.of(context); final colorScheme = Theme.of(context).colorScheme; return Scaffold( appBar: AppBar( leading: IconButton( icon: Icon(_isSidebarCollapsed ? Icons.menu : Icons.close, color: Colors.white), onPressed: () { setState(() { _isSidebarCollapsed = !_isSidebarCollapsed; }); }, ), title: const Text("MMS Version 3.5.01"), actions: [ IconButton( icon: const Icon(Icons.person), onPressed: () { Navigator.pushNamed(context, '/profile'); }, ), ], ), body: Row( children: [ CollapsibleSidebar( isCollapsed: _isSidebarCollapsed, onToggle: () { setState(() { _isSidebarCollapsed = !_isSidebarCollapsed; }); }, onNavigate: (route) { setState(() { _currentSelectedRoute = route; }); Navigator.pushNamed(context, route); }, ), Expanded( child: Padding( padding: const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "Welcome, ${auth.userEmail ?? 'User'}", style: Theme.of(context).textTheme.titleMedium?.copyWith( fontWeight: FontWeight.bold, color: colorScheme.onBackground, ), ), const SizedBox(height: 8), Text( "Select a Department:", style: Theme.of(context).textTheme.titleSmall?.copyWith( fontWeight: FontWeight.w600, color: colorScheme.onBackground, ), ), const SizedBox(height: 8), Expanded( child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 8, crossAxisSpacing: 8, childAspectRatio: 1.6, // Wider and much shorter boxes padding: EdgeInsets.zero, // No extra padding shrinkWrap: true, physics: const ClampingScrollPhysics(), children: [ _buildMiniCategoryCard( context, title: "Air", icon: Icons.air, color: Colors.blue.shade700, route: '/air/home', ), _buildMiniCategoryCard( context, title: "River", icon: Icons.water, color: Colors.teal.shade700, route: '/river/home', ), _buildMiniCategoryCard( context, title: "Marine", icon: Icons.sailing, color: Colors.indigo.shade700, route: '/marine/home', ), _buildMiniSettingsCard(context), ], ), ), ], ), ), ), ], ), ); } Widget _buildMiniCategoryCard( BuildContext context, { required String title, required IconData icon, required Color color, required String route, }) { return Card( elevation: 1, margin: EdgeInsets.zero, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(6), ), child: InkWell( borderRadius: BorderRadius.circular(6), onTap: () => Navigator.pushNamed(context, route), child: Container( padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [color.withOpacity(0.9), color], ), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(icon, size: 26, color: Colors.white), const SizedBox(height: 4), Text( title, style: const TextStyle( color: Colors.white, fontSize: 13, fontWeight: FontWeight.bold, ), ), ], ), ), ), ); } Widget _buildMiniSettingsCard(BuildContext context) { return Card( elevation: 1, margin: EdgeInsets.zero, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(6), ), child: InkWell( borderRadius: BorderRadius.circular(6), onTap: () => Navigator.pushNamed(context, '/settings'), child: Container( padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [Colors.grey.shade700, Colors.grey.shade800], ), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.settings, size: 26, color: Colors.white), const SizedBox(height: 4), const Text( "Settings", style: TextStyle( color: Colors.white, fontSize: 13, fontWeight: FontWeight.bold, ), ), ], ), ), ), ); } }