2
void play(){    
setState(() {
  tween = new VibesTween(
    tween.evaluate(animation),
    new Wave.random(size, random),
  );
  animation.forward(from: 0.0);
});
}

我需要调用这个为特定动画制作动画的播放函数。唯一的问题是每次单击按钮时它都会运行。我需要它每 1 秒调用一次状态并每秒重新渲染一次动画。我怎样才能做到这一点?

4

2 回答 2

3

你真的不需要每秒调用setState一次,你只需要一个重复的动画。并且AnimationController有一种repeat处理这种情况的方法。

要以最基本的形式设置它,您可以调用,

animationController.repeat();

但您也可以提供覆盖,如

animationController.repeat(min: 0.0, max: 1.0, period: Duration(seconds: 1));
于 2018-06-08T14:15:16.723 回答
1

您可以通过在方法play()中将其作为回调函数参数传递来每隔一秒调用一次该Timer.Periodic(Duration, Callback)方法。

const oneSec = const Duration(seconds: 1);
new Timer.periodic(oneSec, (Timer t) -> play());
于 2018-06-08T15:13:25.060 回答