Как остановить анимацию после нажатия [Flutter] - PullRequest
0 голосов
/ 11 февраля 2020

Я пытался показать sh другой вид, в котором есть только текст. Мое главное представление имеет анимацию, которая делает текст из второго представления анимированным после Navigator.pu sh. Я попытался остановить контроллер анимации и попытался открыть главное окно (не удалось заставить его работать правильно).

Future.delayed(const Duration(seconds: 3), () {
    controller.stop();
    setState(() {

   // Tried this
   // Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
      // SecondScreen()), (Route<dynamic> route) => false);

      //And this
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => SecondScreen()
        )
      );
    });
  });

Вот так я инициализирую контроллер.

@override
  void initState() {
    super.initState();
    controller = AnimationController(vsync: this, duration: const Duration(seconds: 2));
animation = Tween<double>(begin: 0, end: 300).animate(controller)
..addListener((){
  setState((){
  });
});
controller.forward();
}

  @override
  void dispose(){
    controller.dispose();
    super.dispose();
  }

И здесь я вызвал функцию (плагин) анимации.

children: <Widget>[
              Image.asset("images/logo.png"),
              SpinKitFadingCircle(
                color: Colors.white,
                controller: controller,
              ),
            ],

Редактировать Это помогло мне: Flutter: избегать метода build () предыдущего вызываемого маршрута при переходе к следующему маршруту Точка не должна была вызывать Navigator.pu sh в методе сборки. Когда я вызвал его в initState, он работал нормально.

...