/// Host scaffold that owns the bottom navigation bar and its four tabs. library; import 'package:flutter/material.dart'; import 'home_screen.dart'; import 'profile_screen.dart'; import 'search_screen.dart'; import 'settings_screen.dart'; /// Switches between Home, Search, Profile, and Settings without stacking routes. class MainShell extends StatefulWidget { const MainShell({super.key}); @override State createState() => _MainShellState(); } class _MainShellState extends State { int _index = 0; static const _pages = [ HomeScreen(), SearchScreen(), ProfileScreen(), SettingsScreen(), ]; @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack( index: _index, children: _pages, ), bottomNavigationBar: NavigationBar( selectedIndex: _index, onDestinationSelected: (index) => setState(() => _index = index), destinations: const [ NavigationDestination( icon: Icon(Icons.home_outlined), selectedIcon: Icon(Icons.home), label: 'Home', ), NavigationDestination( icon: Icon(Icons.search_outlined), selectedIcon: Icon(Icons.search), label: 'Search', ), NavigationDestination( icon: Icon(Icons.person_outline), selectedIcon: Icon(Icons.person), label: 'Profile', ), NavigationDestination( icon: Icon(Icons.settings_outlined), selectedIcon: Icon(Icons.settings), label: 'Settings', ), ], ), ); } }