为实现淡入淡出过渡,我使用了PageRouteBuilder()
来构建一些路线。
但是,我在测试应用程序时注意到,Android上的“后退”按钮和IOS上的“用户”手势无法导航回上一条路线!
这是PageRouteBuilder()
的正常行为吗?还是我做错了什么?
非常感谢!
答案 0 :(得分:0)
弹出到后退按钮与PageRouteBuilder无关,但是与您如何在堆栈中插入第二页有关。
如果您使用的是Navigator.pushNamed(context, <PageRouteBuilder>)
,它将把第一页保留在堆栈中,并且后退按钮应该起作用。
但是,如果您使用的是Navigator.pushNamedReplacement(context, <PageRouteBuilder>)
,它将删除第一页并将第二页压入堆栈。
答案 1 :(得分:0)
事实证明,在MaterialPageRoute()
中,PageTransitionBuilder
是根据应用运行在哪个平台上选择的。
就像使用嵌套导航器一样,我可以通过使用WillPopScope()
小部件使其在Android上运行。
但是,在IOS上,手势是使用私有类_CupertinoBackGestureController
的,我认为目前还没有一种简单的方法来实现这一目标!
希望能帮助面临同一件事的人,并再次感谢!
答案 2 :(得分:0)
我目前正在尝试将要推送的页面包装在 GestureDetector 中,然后设置 onHorizontalDrag 属性之一以弹出路线。 (我在 PageRouteBuilder 本身中这样做,这样我就可以在推送时像往常一样传递页面。)这个 swipedetector package 可能会取代 GestureDetector,或者我什至可以试验这个 swipe_back_detector 专门为使用 PageRouteBuilder 创建的自定义路由(参见他们给出的示例)。