Flutter - BottomNavigationBar底部导航栏切换后,状态丢失。底部
import 'package:flutter/material.dart'; import './pages/home_page.dart'; import './pages/book_page.dart'; import 'package:bottom_nav_bar_test/pages/movie_page.dart'; import 'package:bottom_nav_bar_test/pages/music_page.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Bottom Navigation', home: Main(), theme: ThemeData(primaryColor: Colors.orange), ); } } class Main extends StatefulWidget { @override _MainState createState() => _MainState(); } class _MainState extends State<Main> { int _currentIndex = 0; final List<Widget> _children = [Home(), Book(), Music(), Movie()]; final List<BottomNavigationBarItem> _list = <BottomNavigationBarItem>[ BottomNavigationBarItem( icon: Icon(Icons.home), title: Text('Home'), //backgroundColor: Colors.orange ), BottomNavigationBarItem( icon: Icon(Icons.book), title: Text('Book'), //backgroundColor: Colors.orange ), BottomNavigationBarItem( icon: Icon(Icons.music_video), title: Text('Music'), //backgroundColor: Colors.orange ), BottomNavigationBarItem( icon: Icon(Icons.movie), title: Text('Movie'), //backgroundColor: Colors.orange ), ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Bottom Navigation'), ), bottomNavigationBar: BottomNavigationBar( type: BottomNavigationBarType.fixed, onTap: onTabTapped, currentIndex: _currentIndex, items: _list, ), //body: _children[_currentIndex], body: IndexedStack( index: _currentIndex, children: _children, ), ); } void onTabTapped(int index) { setState(() { _currentIndex = index; }); } }