import 'package:flutter/material.dart'; import 'home_screen.dart'; import 'history_screen.dart'; import 'scan_qr_screen.dart'; // <-- TAMBAH INI class DashboardScreen extends StatefulWidget { const DashboardScreen({super.key}); @override State createState() => _DashboardScreenState(); } class _DashboardScreenState extends State { int _selectedIndex = 0; final List _screens = const [ HomeScreen(), HistoryScreen() ]; void _onItemTapped(int index) { setState(() { _selectedIndex = index; }); } Widget _buildNavItem({ required IconData icon, required String label, required int index, }) { final bool isActive = _selectedIndex == index; return InkWell( onTap: () => _onItemTapped(index), child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon( icon, size: 22, color: isActive ? const Color(0xFF0F2D13) : Colors.black54, ), const SizedBox(height: 4), Text( label, style: TextStyle( fontSize: 12, fontWeight: isActive ? FontWeight.w600 : FontWeight.w400, color: isActive ? const Color(0xFF0F2D13) : Colors.black54, ), ), ], ), ); } @override Widget build(BuildContext context) { return Scaffold( extendBody: true, body: _screens[_selectedIndex], // ================= QRIS BUTTON ================= floatingActionButton: SizedBox( width: 75, height: 75, child: FloatingActionButton( backgroundColor: const Color.fromARGB(255, 20, 40, 0), shape: const CircleBorder(), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => const ScanQrScreen(), ), ); }, child: const Icon( Icons.qr_code_scanner, size: 32, color: Colors.white, ), ), ), floatingActionButtonLocation: FloatingActionButtonLocation .centerDocked, // ================= BOTTOM NAV ================= bottomNavigationBar: Container( decoration: const BoxDecoration( boxShadow: [ BoxShadow( color: Colors.black26, blurRadius: 10, offset: Offset(0, -3), ), ], ), child: ClipRRect( borderRadius: const BorderRadius.only( topLeft: Radius.circular(30), topRight: Radius.circular(30), ), child: BottomAppBar( shape: const CircularNotchedRectangle(), notchMargin: 8, color: const Color.fromARGB(255, 223, 242, 112), child: SizedBox( height: 70, child: Row( mainAxisAlignment: MainAxisAlignment .spaceAround, children: [ _buildNavItem( icon: Icons.home_outlined, label: "Home", index: 0, ), const SizedBox(width: 40), _buildNavItem( icon: Icons.history, label: "History", index: 1, ), ], ), ), ), ), ), ); } }