12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 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<IndexPage> createState() => _IndexPageState();
- }
- class _IndexPageState extends State<IndexPage> {
- final List<BottomNavigationBarItem> 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<Widget> 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: <Widget>[
- 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,
- );
- }
- }
|