Flutter 颤振AnimationController/Tween在多个AnimatedBuilder中的重用
我正在构建一个包含多张卡片的屏幕,点击其中一张卡片时,卡片应该会翻转。我可以使用带Tween和AnimatedBuilder的AnimatedController设置卡的动画。我的问题是,在我所有的“卡片”小部件中重复使用/应用同一个动画控制器的最佳方式是什么,而不必创建多个动画控制器和二者,并将其设置到每张卡片上,但仍然允许我分别设置它们的动画。最后,我就是这么做的。我创建了一个有状态的小部件作为Card小部件,并在Card小部件中声明AnimatedController。然后,我在Card小部件中创建一个方法,用它的AnimatedController控制动画。在父窗口小部件中,我将调用相应的卡片窗口小部件方法来控制每张卡片的动画 在卡片小部件中公开showCard方法:Flutter 颤振AnimationController/Tween在多个AnimatedBuilder中的重用,flutter,flutter-animation,Flutter,Flutter Animation,我正在构建一个包含多张卡片的屏幕,点击其中一张卡片时,卡片应该会翻转。我可以使用带Tween和AnimatedBuilder的AnimatedController设置卡的动画。我的问题是,在我所有的“卡片”小部件中重复使用/应用同一个动画控制器的最佳方式是什么,而不必创建多个动画控制器和二者,并将其设置到每张卡片上,但仍然允许我分别设置它们的动画。最后,我就是这么做的。我创建了一个有状态的小部件作为Card小部件,并在Card小部件中声明AnimatedController。然后,我在Card小
class Card extends StatefulWidget {
final _CardState _CardState = _CardState();
@override
State<StatefulWidget> createState() => _CardState;
void showCard()=>_CardState.showCard();
}
AnimationController _acCardFlip;
Animation<double> _frontFlip;
Animation<double> _backFlip;
@override
void initState() {
super.initState();
_acCardFlip = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 250),
);
_frontFlip = Tween(
begin: 1.0,
end: 0.0,
).animate(CurvedAnimation(
parent: _acCardFlip,
curve: Interval(0.0, 0.5, curve: Curves.easeIn),
));
_backFlip = CurvedAnimation(
parent: _acCardFlip,
curve: Interval(0.5, 1.0, curve: Curves.easeOut),
);
}
showCard() {
setState(() {
if (_acCardFlip.isCompleted || _acCardFlip.velocity > 0)
_acCardFlip.reverse();
else
_acCardFlip.forward();
});
}
然后在列表中创建一张卡,以独立控制多张卡。找到解决方案了吗?@YacineBelarbi我在下面添加了我的解决方案作为答案
Card card = Card();
card.showCard();