繁体   English   中英

更新子传递到有状态小部件

[英]Update child passed into stateful widget

嗨,我有一个名为BobButton()的有状态小部件,它基本上执行 animation,按钮在按下时上下摆动。

BobButton 使用 Bobbing 效果为子小部件设置动画(它是有状态的)

我像这样把一个孩子传给 BobButton

BobButton( //Statefulwidget
  child: Widget(
    color: color,
    controller: animationController,
  )
)

其中一些小部件具有自己的动画或在父小部件 state 中具有更改的变量。 例如,我可能会调用:

setState({
  color = Colors.pink
});

或者

animationController.forward()

但是,小部件不会更新,因为孩子已经被传递到有状态小部件 BobButton 中。

我应该怎么做才能解决这个问题

Widget中覆盖方法

@override
didUpdateWidget(Widget oldWidget) {
  super.didUpdateWidget(oldWidget);
  if (widget.color != oldWidget.color) {
    setState(() {
      //  states variables if neccessary
    });
  }
}

AnimationController是一个Listenable ,因此您可以添加一个侦听器。 或者尝试检查上面提到的didUpdateWidget方法中的value变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM