import 'package:flutter/material.dart'; import 'package:flutter_google_map/pages/tabs/business_page.dart'; import 'package:flutter_google_map/pages/tabs/home_page.dart'; import 'package:flutter_google_map/pages/tabs/mine_page.dart'; import 'package:flutter_google_map/pages/tabs/taxi_page.dart'; class IndexPage extends StatefulWidget { int pageIndex; IndexPage({super.key, this.pageIndex = 0}); @override State createState() => _IndexPageState(); } class _IndexPageState extends State { final List bottomTabs = const [ BottomNavigationBarItem(icon: Icon(Icons.home), label: '出行'), BottomNavigationBarItem(icon: Icon(Icons.business), label: '周边惠'), BottomNavigationBarItem(icon: Icon(Icons.school), label: '打车'), BottomNavigationBarItem(icon: Icon(Icons.school), label: '我的'), ]; final List pages = const [ HomePage(), BusinessPage(), TaxiPage(), MinePage(), ]; int currentIndex = 0; Size get size => MediaQuery.of(context).size; final pageController = PageController(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Maps Sample App'), backgroundColor: Colors.green[700], ), bottomNavigationBar: BottomNavigationBar( items: bottomTabs, currentIndex: currentIndex, type: BottomNavigationBarType.fixed, onTap: (index) { setState(() { currentIndex = index; pageController.jumpToPage(index); }); }, ), drawer: Drawer( child: ListView( padding: EdgeInsets.zero, children: [ const DrawerHeader( decoration: BoxDecoration( color: Colors.green, ), child: Text('Drawer Header'), ), ListTile( title: const Text('Item 1'), onTap: () { Navigator.pop(context); }, ), ListTile( title: const Text('Item 2'), onTap: () { Navigator.pop(context); }, ), ], ), ), body: _getPageBody(context), ); } bool get wantKeepAlive => true; Widget _getPageBody(BuildContext context) { return PageView( controller: pageController, physics: const NeverScrollableScrollPhysics(), onPageChanged: (index) { setState(() { currentIndex = index; }); }, children: pages, ); } }