嗨,我有一个名为 BobButton()
的有状态小部件,它基本上会执行一个动画,按钮在按下时上下摆动。
BobButton 使用 Bobbing 效果为子小部件设置动画(它是有状态的)
我像这样将一个孩子传递给 BobButton
BobButton( //Statefulwidget
child: Widget(
color: color,
controller: animationController,
)
)
其中一些小部件具有自己的动画或具有在父小部件状态中发生变化的变量。例如,我可能会调用:
setState({
color = Colors.pink
});
或
animationController.forward()
但是小部件不会更新,因为子部件已经被传递到有状态小部件 BobButton 中。
我该怎么做才能解决这个问题
答案 0 :(得分:1)
在 Widget
中重写方法
@override
didUpdateWidget(Widget oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.color != oldWidget.color) {
setState(() {
// states variables if neccessary
});
}
}
AnimationController
是一个 Listenable
所以你可以添加一个监听器。或者尝试检查上面提到的 value
方法中的 didUpdateWidget
更改。