Flutter 自定义全局路由跳转动画

网上多数是通过


Navigator.of(context).push(CustomRoute(builder:(ctx)=>APage()))

或者

Navigator.push(context,PageRouteBuilder(pageBuilder:

                      (BuildContext context,Animation animation,

                          Animation secondaryAnimation){

                    return ScaleTransition(

                        scale: animation,

                        alignment: Alignment.bottomRight,

                        child: AnimPage());

但是有的同学可能是通过PushName 来跳转 , 这样需要每个push都手动改一遍,

以及PopUtil方法可能也需要在Material routes属性中先定义好 还是比较繁琐的

所以想在一个地方直接修改全局的默认跳转动画

于是查看MaterialApp源码发现

pageRouteBuilder 属性已经写死了, 在定义完routes之后 , 默认是调用这个属性去生成 PageRoute , 因此我们只需要改这个地方

image
pageRouteBuilder: (RouteSettings settings,WidgetBuilder builder){

  return XXPageRoute(settings: settings,builder: builder);

},

XXPageRoute继承自PageRoute , 在里面实现页面切换的动画

另外注意一个地方, 修改后的类名仍要是 MaterialApp, as 别名为其他再调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容