gpt4 book ai didi

android - 命名路线的动画

转载 作者:IT王子 更新时间:2023-10-29 07:06:01 24 4
gpt4 key购买 nike

在 Flutter 中,我们可以通过扩展 PageRoute(或使用扩展它的类)来自定义 View 更改动画。

例如,我通过使用 CupertinoPageRoute 在我的 MaterialApplication 中将动画更改为“滑动”:

Navigator.of(context).pushReplacement(
CupertinoPageRoute(builder: (context) => Calendar()),
);

现在我想通过使用 main.dart 文件中定义的命名 View 来更改它:

return MaterialApp(
title: 'Demo',
theme: myTheme, // => Theme.of(context).copyWith(...)
initialRoute: '/',
routes: {
'/': (context) => Login(),
'/calendar': (context) => Calendar(),
}
);

这样我就可以调用

Navigator.of(context).pushReplacementNamed('/calendar');

哪个 IMO 更清晰且与 View 无关。

这种方法的问题是我无法定义 PageRoute,因此我无法自定义 View 更改动画。

有办法吗?

最佳答案

我采纳了 chemolins 的建议并以类似的方式解决了它,但使用了 map 。

我“提取”了 routes 对象并将其放在 MaterialApp 之外:

var routes = {
'/': (context) => Login(),
'/calendar': (context) => Calendar()
};

然后我在 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));
}
);
}

关于android - 命名路线的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52698340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com