我是Flutter的新手。
我有一个AnimatedWidget,它基本上将输入文本字段从屏幕的隐藏区域切换到可见部分,但是在某些情况下,我需要重新加载视图。
据我所知,AnimatedWidget在某种程度上扩展了StatefulWidget,但是无法调用setState。
谢谢
答案 0 :(得分:2)
class MyState extends State<MyPage> with TickerProviderStateMixin {
AnimationController controller;
@override
void initState() {
controller = AnimationController(duration: const Duration(milliseconds: 500), vsync: this);
loadDbData();
super.initState();
}
@override
Widget build(BuildContext context) {
final colorTween =
ColorTween(begin: Theme.of(context).primaryColor, end: Theme.of(context).primaryColorDark)
.animate(controller);
return AnimatedBuilder(
animation: colorTween,
builder: (buildContext, child) {
return Container(
color: colorTween.value,
);
});
}
对于开始动画,您可以使用:
controller.forward();
controller.forward(from: 0.5);
controller.reverse();
或者您可以这样设置侦听器:
colorTween.addStatusListener((status) {
if (status == AnimationStatus.completed) {
controller.reverse();
} else if (status == AnimationStatus.dismissed) {
controller.forward();
}
});
希望这就是您需要的