在statusListener中颤振更改AnimationController持续时间

时间:2020-04-29 17:36:59

标签: flutter dart animationcontroller

我是Flutter和移动应用程序开发的新手。

我有一个AnimationController,它的持续时间在变化时会填充一个空的圆周长。它将用于在体育应用中观看时间。动画绘制的圆基本上像this

AnimationController控制器驻留在didChangeDependencies()中。动画会不断重复,直到_numberOfSets为0。完成一组设置后,我想将控制器的持续时间更改为_restTime并重新启动动画。在restTime完成之后,我想切换回_workTime持续时间,并从集合数中减去1。它应该一直循环工作,直到_numberOfSets ==0。您能帮我解决这个问题吗?

controller = AnimationController(
      vsync: this,
      duration: Duration(seconds: _workTime),
    )..addStatusListener((AnimationStatus status) {
        if (_numberOfSets > 0 && status == AnimationStatus.dismissed) {
          if (controller.isAnimating) {
            controller.stop(canceled: true);
          } else {
            controller.duration = Duration(milliseconds: _restTime);
            controller.reverse(
                from: controller.value == 0.0 ? 1.0 : controller.value);
          }
        }
        if (_numberOfSets > 0 && status == AnimationStatus.completed) {
          setState(() {
            _numberOfSets--;
          });
        }
      });

0 个答案:

没有答案