import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../pages/daily_focus_page.dart'; import '../pages/insights_page.dart'; import '../pages/settings_page.dart'; class MainContainer extends StatefulWidget { const MainContainer({super.key}); @override State createState() => _MainContainerState(); } class _MainContainerState extends State { int _currentIndex = 0; final List _pages = [ const DailyFocusPage(), const InsightsPage(), const SettingsPage(), ]; @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack(index: _currentIndex, children: _pages), bottomNavigationBar: Container( decoration: BoxDecoration( color: Colors.white, border: Border( top: BorderSide(color: Colors.grey.withOpacity(0.05)), ), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.03), blurRadius: 20, offset: const Offset(0, -5), ), ], ), child: SafeArea( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ _buildNavItem(0, Icons.adjust_rounded, "Focus"), _buildNavItem(1, Icons.pie_chart_outline_rounded, "Insights"), _buildNavItem(2, Icons.settings_outlined, "Settings"), ], ), ), ), ), ); } Widget _buildNavItem(int index, IconData icon, String label) { final isSelected = _currentIndex == index; return GestureDetector( onTap: () { setState(() => _currentIndex = index); HapticFeedback.selectionClick(); }, behavior: HitTestBehavior.opaque, child: AnimatedContainer( duration: const Duration(milliseconds: 200), padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: isSelected ? Colors.black.withOpacity(0.05) : Colors.transparent, borderRadius: BorderRadius.circular(16), ), child: Icon( icon, color: isSelected ? Colors.black : Colors.grey.shade400, size: 26, ), ), ); } }