过场动画
过场动画也就是切换路由时的动画
这个东西有几种方案可以做
- 继承
PageRoute
来做, 复写 5 个抽象方法, 并抽象buildTransitions
- 继承已有的系统类, 比如 MaterialPageRoute 或者 CupertinoPageRoute
- 一劳永逸的方案, 使用
PageTransitionsTheme
类结合 MaterialApp 的 theme 的pageTransitionsTheme
属性
前两种目前网络上也有一些人做了分享, 但第三种好像很少有人使用, 我这里就来说一下PageTransitionsTheme
的用法
这东西有如下的好处:
- 设置一次, 你所有的
MaterialPageRoute
都可以生效 - 对于命名路由, 也就是
pushNamed
体系的也有效
先分析下源码
为啥分析源码? 因为如果上来就用显得不高端
先找一个大家都知道的切入点, 一般的过场动画都是用的 Navigator.push
方法来实现的
看看方法里的实现, 会发现很多常见的东西, 比如, 每一个 Route 都有自己的 OverlayEntry
然后会有一个 install 方法