作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个抽屉,并且该应用程序已经在“主页”页面中。
点击抽屉中的“设置”项目时,它将再次导航到“设置”。
如何防止它,防止导航到与当前页面相同的页面。
Widget build(BuildContext context) {
return new Drawer(
child: new ListView(
children: <Widget>[
new ListTile(
title: new Text("Home"),
trailing: new Icon(Icons.local_florist),
onTap: (){
Navigator.of(context).pop();
Navigator.of(context).push(new MaterialPageRoute(builder: (BuildContext context) => new HomePage()));
Navigator.pushNamedAndRemoveUntil(context, '/', (_) => false);
},
),
new ListTile(
title: new Text("Search"),
trailing: new Icon(Icons.search),
onTap: (){
Navigator.of(context).pop();
Navigator.of(context).push(new MaterialPageRoute(builder: (BuildContext context) => new SearchPage('Search Web')));
},
),
new Divider(),
new ListTile(
title: new Text("Settings"),
trailing: new Icon(Icons.settings),
onTap: (){
Navigator.of(context).pop();
Navigator.of(context).push(new MaterialPageRoute(builder: (BuildContext context) => new SettingsPage('Settings Center')));
},
),
],
),
);
}
最佳答案
一个相当简单的解决方案是将当前页面的按钮禁用。您可以对所有页面进行枚举并传递“currentPage”,然后在构建列表图块时可以执行onTap: currentPage == Pages.Search ? null : () { .... }
之类的操作
如果您想做一些更可配置的操作,则可以像我为应用程序做的一样-对于我的抽屉菜单,我有一个枚举列出了所有选项(例如enum DrawerSections { home, profile, settings, about, logout }
,我的抽屉类采用了部分列表)显示,因为我不想在每种情况下都显示所有菜单部分,您可以传入类似DrawerSectionSpec之类的列表,该列表具有DrawerSection
和bool enabled
。
关于dart - 防止在 flutter 中轻击抽屉项时将页面导航到当前页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496238/
我是一名优秀的程序员,十分优秀!