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 别名为其他再调用

你可能感兴趣的:(Flutter 自定义全局路由跳转动画)