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();
}
});
Надеюсь, это то, что вам нужно