【发布时间】:2020-04-09 18:52:34
【问题描述】:
我正在使用 Drawer 为用户提供菜单,并且菜单项会打开应用程序的不同页面。但是正在发生的事情是,每个打开的新页面都被加载到前一页的顶部。我需要的是用新请求的页面替换当前页面。
我的 main 启动应用程序为:
void main() {
runApp(
MaterialApp(
home: MyJobs(),
),
);
}
每个菜单项将新屏幕加载为:
ListTile(
title: Text('Time Off Requests'),
leading: Icon(Icons.timer_off, color: Colors.redAccent),
onTap: () {
Navigator.of(context).pop();
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => TimeOffRequests()));
},
),
我意识到我没有卸载当前页面。但我不知道该怎么做。 还是有更好的方法来做到这一点?在更网络化的思维方式中,我想创建一个空白正文,然后在该正文中插入一个页面(可能使用 setState),然后每次请求另一个页面时,都会用请求的页面重绘正文(创建的每个页面作为自定义小部件?)。这是一种可能的方式吗?
感谢您的任何帮助或建议。
保罗
【问题讨论】:
-
如果您导航到下一页,您是否希望您的导航抽屉保留?那是你想要的吗?你能让你的问题更清楚吗?因为在颤振中,当你使用抽屉时,你不应该在使用 navigator.push() 移动到下一页之前 pop() 当前上下文。但是,如果您想在导航到的每个页面中保留抽屉,那么您需要在每个屏幕/页面中放置抽屉。使其成为一个小部件并在每个页面中调用。把你的问题说清楚。我会帮你的
-
是的,每一页都有抽屉菜单。我已经将抽屉菜单创建为自定义小部件,并且每个页面都在使用这个小部件。谢谢。
标签: flutter