Легко передать состояние виджетам.У меня есть StatefulWidget
, который содержит анимацию с его контроллером.Мне нужно иметь возможность запускать анимацию из другого виджета выше в моем дереве виджетов.
![app](https://i.stack.imgur.com/4T7U1.png)
Мой MainApp
должен запускать анимацию с помощью кнопки.
![enter image description here](https://i.stack.imgur.com/WN8bHl.png)
Как я понимаю, AnimationController
имеет только обязательный API.Я могу позвонить controller.forward()
или controller.reverse()
.Но для этого мне нужно выставить контроллер на свое MainApp.
В настоящее время я поддерживаю глобальную переменную моего состояния.
class MainApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
...
body: new LogoWidget(),
);
}
_startAnimation() {
_state.restartAnimation();
}
}
_LogoWidgetState _state; // yuk!
class LogoWidget extends StatefulWidget {
_LogoWidgetState createState() {
_state = _LogoWidgetState();
return _state;
}
}
class _LogoWidgetState extends State<LogoWidget>
with SingleTickerProviderStateMixin {
Animation<double> animation;
AnimationController controller;
restartAnimation() {
controller.value == 1.0 ? controller.reverse() : controller.forward();
}
...
}
(полный исходный код здесь )
Как лучше справиться с этим?