Bac*_*ash 6 animation android routes flutter
PageRoute
在 Flutter 中,我们可以通过扩展(或使用扩展它的类)来自定义视图更改动画。
MaterialApplication
例如,我正在使用这种方式将动画更改为“滑动” CupertinoPageRoute
:
Navigator.of(context).pushReplacement(
CupertinoPageRoute(builder: (context) => Calendar()),
);
Run Code Online (Sandbox Code Playgroud)
现在我想通过使用main.dart
文件中定义的命名视图来更改它:
return MaterialApp(
title: 'Demo',
theme: myTheme, // => Theme.of(context).copyWith(...)
initialRoute: '/',
routes: {
'/': (context) => Login(),
'/calendar': (context) => Calendar(),
}
);
Run Code Online (Sandbox Code Playgroud)
这样我就可以打电话
Navigator.of(context).pushReplacementNamed('/calendar');
Run Code Online (Sandbox Code Playgroud)
IMO 更清晰且与视图无关。
这种方法的问题是我无法定义 a PageRoute
,因此我无法自定义视图更改动画。
有没有办法做到这一点?
我采纳了凯莫林的建议,并以类似的方式解决了这个问题,但使用了地图。
我“提取”该routes
对象并将其放在外面MaterialApp
:
var routes = {
'/': (context) => Login(),
'/calendar': (context) => Calendar()
};
Run Code Online (Sandbox Code Playgroud)
然后我在里面使用了它onGenerateRoute
:
Widget build(BuildContext context) {
var routes = {
'/': (context) => Login(),
'/calendar': (context) => Calendar()
};
return MaterialApp(
title: 'Demo',
theme: myTheme,
initialRoute: '/',
onGenerateRoute: (settings) {
return CupertinoPageRoute(builder: (context) => routes[settings.name](context));
}
);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4041 次 |
最近记录: |