Как перестроить AnimatedWidget во Flutter - PullRequest
0 голосов
/ 22 октября 2018

Я новичок во Флаттере.

У меня есть AnimatedWidget, который в основном переключает текстовое поле ввода из скрытой области экрана на видимую часть, однако в некоторых случаях мне нужно перезагрузить представление.

Насколько я знаю, AnimatedWidget каким-то образом расширен StatefulWidget, однако нет способа вызвать setState.

Спасибо

1 Ответ

0 голосов
/ 22 октября 2018
class MyState extends State<MyPage> with TickerProviderStateMixin {    
  AnimationController controller;

  @override
  void initState() {
    controller = AnimationController(duration: const Duration(milliseconds: 500), vsync: this);
    loadDbData();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    final colorTween =
      ColorTween(begin: Theme.of(context).primaryColor, end: Theme.of(context).primaryColorDark)
        .animate(controller);
    return AnimatedBuilder(
        animation: colorTween,
        builder: (buildContext, child) {
          return Container(
              color: colorTween.value,
          );
        });
  }

И для запуска анимации вы можете использовать:

controller.forward();
controller.forward(from: 0.5);
controller.reverse();

Или вы можете настроить слушателя так:

colorTween.addStatusListener((status) {
    if (status == AnimationStatus.completed) {
      controller.reverse();
    } else if (status == AnimationStatus.dismissed) {
      controller.forward();
    }
  });

Надеюсь, это то, что вам нужно

...