为了实现淡入淡出过渡,我使用 aPageRouteBuilder()
来构建我的一些路线。然而,我注意到在测试应用程序时,Android 上的后退按钮和 IOS 上的用户手势无法导航回之前的路线!
这是正常的行为PageRouteBuilder()
吗?还是我可能做错了什么?
多谢!
为了实现淡入淡出过渡,我使用 aPageRouteBuilder()
来构建我的一些路线。然而,我注意到在测试应用程序时,Android 上的后退按钮和 IOS 上的用户手势无法导航回之前的路线!
这是正常的行为PageRouteBuilder()
吗?还是我可能做错了什么?
多谢!
事实证明,inMaterialPageRoute()
是PageTransitionBuilder
根据应用程序运行的平台来选择的。
通过使用小部件,我能够让它在 Android 上工作WillPopScope()
,就像我使用嵌套导航器一样。
但是,在 IOS 上,他们使用的是私有类_CupertinoBackGestureController
,我认为目前还没有简单的方法来实现这一点!
希望对遇到同样情况的人有所帮助,再次感谢!
我目前正在尝试将要推送的页面包装在 GestureDetector 中,然后设置其中一个 onHorizontalDrag 属性来弹出路由。(我在 PageRouteBuilder 本身中执行此操作,这样我可以在推送时像往常一样传入页面。)这个swipedetector 包可能会替换 GestureDetector,或者我什至可以尝试使用专门为使用PageRouteBuilder制作的自定义路由制作的 swipe_back_detector(请参阅他们给出的例子)。
弹出到后退按钮与 PageRouteBuilder 无关,但与您如何在堆栈中插入第二页有关。
如果您正在使用Navigator.pushNamed(context, <PageRouteBuilder>)
,这将保留堆栈中的第一页,并且后退按钮应该可以工作。但是,如果您使用Navigator.pushNamedReplacement(context, <PageRouteBuilder>)
,它将删除第一页并将第二页推入堆栈。