按下按钮更改 BottomNavigationBar 索引
Change BottomNavigationBar index with button press
我有一个像这样的底部导航栏:
Scaffold navBarPages() {
return Scaffold(
key: _scaffoldKey,
body: PageView(
children: <Widget>[
//Sends current user to pages.
PageOne(),
PageTwo(),
PageThree(),
PageFour(),
PageFive(),
],
controller: pageController,
onPageChanged: onPageChanged,
physics: NeverScrollableScrollPhysics(),
),
bottomNavigationBar: CupertinoTabBar(
currentIndex: pageIndex,
onTap: onTap,
activeColor: Theme.of(context).primaryColor,
items: [
BottomNavigationBarItem()
...
],
),
);
}
在 PageFive() 上,我正在执行一个按下按钮的操作,我想将屏幕弹出到 PageOne()。 Navigator.pop(context)
returns 到 PageFive(),关闭有按钮的屏幕。
我尝试在我的 main 上使用路由,然后推送到“/pageOne”namedRoute。但是随后 pageOne 没有与 BottomNavBar 一起出现,我想关闭的屏幕仍在小部件树下。我想完全弹出它,将用户重定向到第一页。
更新:
将 pushAndRemove 与路由一起使用:
Navigator.of(context).pushNamedAndRemoveUntil(
'/pageOne', (Route<dynamic> route) => false);
我在路由方面遇到的问题是 BottomNavBar 在推送后不会显示。但为了修复它,我改变了
routes: {'/pageOne': (context) => PageOne()}
到
routes: {'/home': (context) => Home()}
Home 包含 BottomNavBar class,因此它适用于 'reload' 应用程序,将用户重定向到第一页。
如果你只是想导航到“/pageOne”并删除所有以前的路线,而不是Navigator.pop(context)
,你可以做类似
的事情
Navigator.of(context).pushNamedAndRemoveUntil(
'/pageOne', (Route<dynamic> route) => false);
我有一个像这样的底部导航栏:
Scaffold navBarPages() {
return Scaffold(
key: _scaffoldKey,
body: PageView(
children: <Widget>[
//Sends current user to pages.
PageOne(),
PageTwo(),
PageThree(),
PageFour(),
PageFive(),
],
controller: pageController,
onPageChanged: onPageChanged,
physics: NeverScrollableScrollPhysics(),
),
bottomNavigationBar: CupertinoTabBar(
currentIndex: pageIndex,
onTap: onTap,
activeColor: Theme.of(context).primaryColor,
items: [
BottomNavigationBarItem()
...
],
),
);
}
在 PageFive() 上,我正在执行一个按下按钮的操作,我想将屏幕弹出到 PageOne()。 Navigator.pop(context)
returns 到 PageFive(),关闭有按钮的屏幕。
我尝试在我的 main 上使用路由,然后推送到“/pageOne”namedRoute。但是随后 pageOne 没有与 BottomNavBar 一起出现,我想关闭的屏幕仍在小部件树下。我想完全弹出它,将用户重定向到第一页。
更新: 将 pushAndRemove 与路由一起使用:
Navigator.of(context).pushNamedAndRemoveUntil(
'/pageOne', (Route<dynamic> route) => false);
我在路由方面遇到的问题是 BottomNavBar 在推送后不会显示。但为了修复它,我改变了
routes: {'/pageOne': (context) => PageOne()}
到
routes: {'/home': (context) => Home()}
Home 包含 BottomNavBar class,因此它适用于 'reload' 应用程序,将用户重定向到第一页。
如果你只是想导航到“/pageOne”并删除所有以前的路线,而不是Navigator.pop(context)
,你可以做类似
Navigator.of(context).pushNamedAndRemoveUntil(
'/pageOne', (Route<dynamic> route) => false);