flutter - Flutter,如何实现导航过渡的手势?
问题描述
如何在 Flutter 中实现导航过渡的手势?
例如,我想实现像 CupertinoPageRoute 这样的导航(从底部过渡),
但我也想向下滑动弹出导航,
并且过渡也应该与手势相匹配。
Update1:经过一番研究,我发现 BuilderPageRoute 可以做自定义导航转换,但我仍然无法实现手势。
解决方案
经过研究,我有一个解决方案。(我认为这是唯一的解决方案)。
令人惊讶的是,几乎没有人关心这个功能。
但是,唯一的方法是创建一个GestureController
如何?
在每个 navigator.push 我们需要有PageRoute
在 PageRoute 里面有两个重要的东西
- AnimationController - 控制转场的动画。
- 导航器- 保持导航状态。
您将需要创建一个GestureContrller来检测手势,然后将其转换为控制动画进度。
当您第一次检测到手势时,您需要调用navigator.didStartUserGesture
完成手势后,您需要调用navigator.didStopUserGesture。
以Flutter 源代码中的_CupertinoBackGestureController为例。
推荐阅读
- python - 如何通过名称找出正在运行的 python 脚本的 psid?
- python - Protobuf 将 int64 数据类型编码为 json 映射中的字符串
- java - 使用 USB 打印机打印 pdf
- c - 关于 C 练习 6.18-2 的指针,我的解决方案不起作用
- node.js - 用于项目更新的 Angular 预填充表单
- javascript - 为什么history.push 在路由“/”中不起作用?
- php - PHP 64 位连接到 32 位 ODBC 驱动程序
- python - gspread 和 google sheet api 不会从 google sheet 中读取一个单元格并给我超时错误
- python - python multiprocessing pool.map() 等到方法完成
- javascript - 如何将 nuxt.config.js 中的 .env 值与运行时配置一起使用