【问题标题】:Update child passed into stateful widget更新子传递到有状态小部件
【发布时间】:2021-03-30 09:51:24
【问题描述】:

您好,我有一个名为 BobButton() 的有状态小部件,它基本上会执行一个动画,即按下按钮时会上下摆动。

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

我像这样将一个孩子传递给 BobButton

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

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

setState({
  color = Colors.pink
});

animationController.forward()

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

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

【问题讨论】:

    标签: flutter dart flutter-animation


    【解决方案1】:

    Widget中重写方法

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

    AnimationController 是一个Listenable,所以你可以添加一个监听器。或者尝试检查上面提到的didUpdateWidget 方法中的value 更改。

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 2021-07-25
      • 2021-08-29
      • 1970-01-01
      • 2021-06-29
      • 2021-06-11
      • 1970-01-01
      • 2020-03-18
      • 2018-09-01
      相关资源
      最近更新 更多