我在网上看了,但有各种案例我尝试过但都失败了,看起来很容易,但有些案例却很难。我有一个 BottomNavBar,我在其中列出了我要渲染的小部件,它工作正常(但不确定它是否是正确的方法)。我有一个Drawer
,当我按下其中一个菜单项时,我想渲染那个小部件,但 BottomNavBar 是持久的。换句话说,几乎所有的屏幕都应该使用持久的 BottomNavBar 进行渲染。这是代码:
底部导航栏:
class BottomNavBar extends StatefulWidget {
static const String id = 'bottom_navbar_screen';
@override
_BottomNavBarState createState() => _BottomNavBarState();
}
class _BottomNavBarState extends State<BottomNavBar> {
int _selectedIndex = 0; // the starting screen (can be any of them by changing the starting index)
static List<Widget> _widgetOptions = <Widget>[
Screen1(),
Screen2(),
Screen3(),
Screen4(),
Screen5(),
];
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: _widgetOptions.elementAt(_selectedIndex),
),
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
label: Tab1,
),
BottomNavigationBarItem(
label: Tab2,
),
BottomNavigationBarItem(
label:Tab3,
),
BottomNavigationBarItem(
label: Tab4,
),
BottomNavigationBarItem(
label: Tab5,
),
],
currentIndex: _selectedIndex,
onTap: _onItemTapped,
),
);
}
}
现在在应用程序的某个时刻,我有一个Drawer
,当我按下抽屉内的一个菜单项时,它让我说 Screen2,我只是被发送到 Screen2 但没有显示 BottomNavBar(这是合乎逻辑的,但我想要展示它,因此我遇到了问题)。我尝试使用Navigator.push(context, MaterialPageRoute(builder: (context) => Screen2(index: 1),),);
并初始化 BottomNavBar 内的索引,但失败了。对于我遇到的这类问题,有更好的解决方案吗?在此先感谢您的帮助!