Анимация флаттера setState работает только с жестко заданным значением - PullRequest
0 голосов
/ 22 сентября 2019

Когда я пытаюсь повернуть CustomWidget с помощью этого кода, все работает отлично.

_animation = Tween(begin: 0.0, end: maxSpeed).animate(CurvedAnimation(
        parent: _controller, curve: Curves.ease, reverseCurve: Curves.easeOut))
      ..addListener(() {
        setState(() {
          myWidget.rotate(0.5); //or any other value
        });
      });

Но проблема в том, что я хочу, чтобы он анимировался с использованием кривой анимации (т.е. не жестко закодирован 0.5. Таким образом, мой код

_animation = Tween(begin: 0.0, end: maxSpeed).animate(CurvedAnimation(
        parent: _controller, curve: Curves.ease, reverseCurve: Curves.easeOut))
      ..addListener(() {
        setState(() {
          print('animation value: $_animation.value');
          myWidget.rotate(_animation.value);
        });
      });

Тогда виджет остается точно таким же. Я добавил оператор print, и _animation.value приятно переходит от 0 к maxSpeed, так что это не похоже наэто ноль и, следовательно, не работает.

Если это может помочь, вот распечатка последних операторов печати до окончания анимации

print logs

...