【发布时间】:2019-12-24 04:08:18
【问题描述】:
目标:按下一个按钮,让它切换到另一个带有动画过渡的页面。
为此,我正在使用 AnimatedSwitcher。
下面是我的代码:
class WelcomeScreenSwitcher extends State<RandomWords>{
Widget calledWidget;
void switchPage(int newNumber, context) {
if (newNumber == 1) {
setState(() {calledWidget = welcomeScreen(context);},);
} else if (newNumber == 2) {
setState(() {calledWidget = learnMoreScreen(context);},);}
}
@override
Widget build(BuildContext context) {
if (calledWidget == null) {
switchPage(1, context);
}
return AnimatedSwitcher(
duration: Duration(milliseconds: 5000),
child: calledWidget,
);
Widget welcomeScreen(context){
return Scaffold({body: Column(children: [
RaisedButton(onPressed: () {switchPage(2, context);}, child: Text('B'),),],
);
});
}
Widget learnMoreScreen(context){
return Scaffold({body: Column(children: [
RaisedButton(onPressed: () {switchPage(2, context);}, child: Text('B'),),],
);
});
}
}
代码可以正常工作。它确实在两个页面之间切换,但没有动画。
在开发过程中的某个时刻,我得到了动画,但后来它就停止了,我不知道为什么。我不记得更改任何关于我如何调用 AnimatedSwitcher 的具体内容。
如果它有任何用处,热重载也不再起作用。我需要重新启动应用程序才能进行任何更改注册。在开始使用 AnimatedSwitcher 之前,它曾经正常运行。
【问题讨论】:
-
将您的方法重构为实际的类。那应该可以解决它。
-
@RémiRousselet 能否请您举一个小例子说明它的外观?
-
@RémiRousselet 你能解释一下为什么这些方法不起作用,但实际类可以吗?
-
@EmilAdz 方法不会创建新的 BuildContext。上课。
标签: flutter flutter-layout flutter-animation