gpt4 book ai didi

flutter - 如何在Flutter中创建自定义反向导航

转载 作者:行者123 更新时间:2023-12-03 04:46:10 25 4
gpt4 key购买 nike

我正在尝试在Flutter应用中实现自定义导航。

在我的主页上,我有以下可能的路线:

选项1

主->仪表板->用户交易列表->交易页面->详细信息页面

选项2

主页->登录->仪表板->用户交易列表->交易页面->详细信息页面

我在选项1中遇到的问题是,当想要从详细信息页面向后浏览选项1时,我希望能够转到交易页面,但导航使我回到了Main。

登录后的选项2中,在仪表板上时,用户应转到主页而不是返回登录页面。

我尝试过使用WillPopScope,如下所示:

Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {

Navigator.pop(context, MaterialPageRoute(builder: (context) => BuyerDealPage()),);
return false;
},
child: MaterialApp(

home: Scaffold(

但是,有了以上内容,该应用仍然可以一直导航回到主页,而不是返回交易页面。

我尝试将 WillPopScope移动到Material应用程序下方,但这也不起作用。

我是否使用 WillPopScope不正确?我的想法是 WillPopScope覆盖后退按钮吗?

我也尝试将 Navigator.pop替换为 Navigator.push,但这似乎也不起作用。

不确定是否有帮助,但是我想在所有页面上实现 WillPopScope,以确保指定后退导航。

编辑:关于我如何在页面之间进行推送的代码(例如用户交易列表->交易页面示例)
Navigator.push(context,MaterialPageRoute(builder: (context) => BuyerDealPage()));

最佳答案

我认为,如果您使用Navigator.of(context).pop()Navigator.of(context).push()推送下一页,则仅标准Navigator.of(context).pushNamed()应该适用。

对于第二种情况,登录后推送仪表板页面时,可以使用Navigator.of(context).pushReplacement()方法,它将用仪表板页面替换登录页面。这样,当您尝试从仪表板页面返回时,您将直接进入主页。

如果要通过Android后退按钮实现相同的行为,则需要像以前一样用WillPopScope包装页面,但在onWillPop中使用:

WillPopScope(
onWillPop: () async {
Navigator.of(context).pop();
return false;
},
child: ...yourNextWidgetHere...

关于flutter - 如何在Flutter中创建自定义反向导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62269419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com