使用PageRouteBuilder

时间:2019-12-16 11:59:30

标签: flutter flutter-navigation

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

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

非常感谢!

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

事实证明,在MaterialPageRoute()中,PageTransitionBuilder是根据应用运行在哪个平台上选择的。

就像使用嵌套导航器一样,我可以通过使用WillPopScope()小部件使其在Android上运行。

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

希望能帮助面临同一件事的人,并再次感谢!

答案 2 :(得分:0)

我目前正在尝试将要推送的页面包装在 GestureDetector 中,然后设置 onHorizo​​ntalDrag 属性之一以弹出路线。 (我在 PageRouteBuilder 本身中这样做,这样我就可以在推送时像往常一样传递页面。)这个 swipedetector package 可能会取代 GestureDetector,或者我什至可以试验这个 swipe_back_detector 专门为使用 PageRouteBuilder 创建的自定义路由(参见他们给出的示例)。