2

为了实现淡入淡出过渡,我使用 aPageRouteBuilder()来构建我的一些路线。然而,我注意到在测试应用程序时,Android 上的后退按钮和 IOS 上的用户手势无法导航回之前的路线!

这是正常的行为PageRouteBuilder()吗?还是我可能做错了什么?

多谢!

4

3 回答 3

2

事实证明,inMaterialPageRoute()PageTransitionBuilder根据应用程序运行的平台来选择的。

通过使用小部件,我能够让它在 Android 上工作WillPopScope(),就像我使用嵌套导航器一样。

但是,在 IOS 上,他们使用的是私有类_CupertinoBackGestureController,我认为目前还没有简单的方法来实现这一点!

希望对遇到同样情况的人有所帮助,再次感谢!

于 2019-12-17T10:55:39.200 回答
0

我目前正在尝试将要推送的页面包装在 GestureDetector 中,然后设置其中一个 onHorizo​​ntalDrag 属性来弹出路由。(我在 PageRouteBuilder 本身中执行此操作,这样我可以在推送时像往常一样传入页面。)这个swipedetector 包可能会替换 GestureDetector,或者我什至可以尝试使用专门为使用PageRouteBuilder制作的自定义路由制作的 swipe_back_detector(请参阅他们给出的例子)。

于 2021-05-02T19:04:22.400 回答
0

弹出到后退按钮与 PageRouteBuilder 无关,但与您如何在堆栈中插入第二页有关。

如果您正在使用Navigator.pushNamed(context, <PageRouteBuilder>),这将保留堆栈中的第一页,并且后退按钮应该可以工作。但是,如果您使用Navigator.pushNamedReplacement(context, <PageRouteBuilder>),它将删除第一页并将第二页推入堆栈。

于 2019-12-16T13:04:31.080 回答