首页 > 解决方案 > Flutter,如何实现导航过渡的手势?

问题描述

如何在 Flutter 中实现导航过渡的手势?

例如,我想实现像 CupertinoPageRoute 这样的导航(从底部过渡),

但我也想向下滑动弹出导航,

并且过渡也应该与手势相匹配。


Update1:​​经过一番研究,我发现 BuilderPageRoute 可以做自定义导航转换,但我仍然无法实现手势。

标签: flutter

解决方案


经过研究,我有一个解决方案。(我认为这是唯一的解决方案)。

令人惊讶的是,几乎没有人关心这个功能。

但是,唯一的方法是创建一个GestureController

如何?

在每个 navigator.push 我们需要有PageRoute

在 PageRoute 里面有两个重要的东西

  1. AnimationController - 控制转场的动画。
  2. 导航器- 保持导航状态。

您将需要创建一个GestureContrller来检测手势,然后将其转换为控制动画进度。

当您第一次检测到手势时,您需要调用navigator.didStartUserGesture

完成手势后,您需要调用navigator.didStopUserGesture

以Flutter 源代码中的_CupertinoBackGestureController为例。


推荐阅读