import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../core/app_theme.dart'; import '../../../features/auth/auth_notifier.dart'; import '../../../core/routes.dart'; import 'home_page.dart'; import 'kumbung_map_page.dart'; import 'control_page.dart'; class MainPage extends ConsumerStatefulWidget { const MainPage({super.key}); @override ConsumerState createState() => _MainPageState(); } class _MainPageState extends ConsumerState { int _currentIndex = 0; final List _pages = const [ MonitoringPage(), KumbungMapPage(), ControlPage(), ]; Future _logout() async { final confirm = await showDialog( context: context, builder: (_) => AlertDialog( title: const Text('Keluar'), content: const Text('Apakah kamu yakin ingin keluar?'), actions: [ TextButton( onPressed: () => Navigator.pop(context, false), child: const Text('Batal'), ), TextButton( onPressed: () => Navigator.pop(context, true), child: const Text( 'Keluar', style: TextStyle(color: AppTheme.statusDanger), ), ), ], ), ); if (confirm == true && mounted) { await ref.read(authProvider.notifier).logout(); if (mounted) { Navigator.pushNamedAndRemoveUntil( context, AppRoutes.landing, (_) => false); } } } @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack( index: _currentIndex, children: _pages, ), bottomNavigationBar: BottomNavigationBar( currentIndex: _currentIndex, onTap: (i) => setState(() => _currentIndex = i), items: const [ BottomNavigationBarItem( icon: Icon(Icons.dashboard_outlined), activeIcon: Icon(Icons.dashboard), label: 'Monitoring', ), BottomNavigationBarItem( icon: Icon(Icons.map_outlined), activeIcon: Icon(Icons.map), label: 'Peta', ), BottomNavigationBarItem( icon: Icon(Icons.tune_outlined), activeIcon: Icon(Icons.tune), label: 'Control', ), ], ), floatingActionButton: FloatingActionButton.small( onPressed: _logout, backgroundColor: Colors.white, foregroundColor: AppTheme.textSecondary, elevation: 2, child: const Icon(Icons.logout, size: 20), ) ); } }