網(wǎng)上多數(shù)是通過
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());
但是有的同學(xué)可能是通過PushName 來跳轉(zhuǎn) , 這樣需要每個(gè)push都手動(dòng)改一遍,
以及PopUtil方法可能也需要在Material routes屬性中先定義好 還是比較繁瑣的
所以想在一個(gè)地方直接修改全局的默認(rèn)跳轉(zhuǎn)動(dòng)畫
于是查看MaterialApp源碼發(fā)現(xiàn)
pageRouteBuilder 屬性已經(jīng)寫死了, 在定義完routes之后 , 默認(rèn)是調(diào)用這個(gè)屬性去生成 PageRoute , 因此我們只需要改這個(gè)地方
image
pageRouteBuilder: (RouteSettings settings,WidgetBuilder builder){
return XXPageRoute(settings: settings,builder: builder);
},
XXPageRoute繼承自PageRoute , 在里面實(shí)現(xiàn)頁(yè)面切換的動(dòng)畫
另外注意一個(gè)地方, 修改后的類名仍要是 MaterialApp, as 別名為其他再調(diào)用