Flutter 在“颤振”中的相似值之间设置动画
“颤振”非常擅长在两个不同的值之间制作动画,但是,制作一个在其开始位置结束的值的动画的最佳方法是什么 e、 g我有一个容器,我想收缩它,然后在用户输入时将其扩展回原来的宽度 由于似乎没有简单的方法可以做到这一点,我尝试设置动画和动画控制器,并尝试快速连续调用_controller.forward()和_controller.backword()(开始状态是容器完全展开,结束状态是容器完全收缩)。请注意,我正试图通过“边插入”属性执行此操作 我是不是让事情变得更复杂了?有更好的办法吗Flutter 在“颤振”中的相似值之间设置动画,flutter,flutter-layout,flutter-animation,Flutter,Flutter Layout,Flutter Animation,“颤振”非常擅长在两个不同的值之间制作动画,但是,制作一个在其开始位置结束的值的动画的最佳方法是什么 e、 g我有一个容器,我想收缩它,然后在用户输入时将其扩展回原来的宽度 由于似乎没有简单的方法可以做到这一点,我尝试设置动画和动画控制器,并尝试快速连续调用_controller.forward()和_controller.backword()(开始状态是容器完全展开,结束状态是容器完全收缩)。请注意,我正试图通过“边插入”属性执行此操作 我是不是让事情变得更复杂了?有更好的办法吗 void i
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: Duration(milliseconds: 1000),
);
_insetAnimation = Tween<EdgeInsetsGeometry>(
begin: EdgeInsets.symmetric(horizontal: 0),
end: EdgeInsets.symmetric(horizontal: 500),
).animate(
CurvedAnimation(
parent: _controller,
curve: Curves.bounceIn,
),
);
_insetAnimation.addListener(() => setState(() {}));
请注意,我正试图通过扩展和收缩边插入来实现所需的结果。到目前为止,当我只调用forward时,我能够让它收缩,但是当我在它之后添加reverse方法时,什么也没有发生。其间的延迟只是一次不顾一切的尝试:)经过一番挖掘,我发现我可以使用此语法在..addStatusListener()中获得我想要的效果
\u insetAnimation=Tween(
开始:边集合。对称(水平:0),
端部:边缘组。对称(水平:25),
).制作动画(
曲线化(
父节点:_控制器,
曲线:Curves.easeOut,
反向曲线:Curves.bounceIn
)..addStatusListener((状态){
如果(状态==AnimationStatus.completed){
_controller.reverse();
}
}),
);
_addListener(()=>setState((){}));
我仍然很好奇是否有一种更有效的方法来实现这一点,尽管经过一些挖掘,我发现我可以使用此语法通过..addStatusListener()获得我想要的效果
\u insetAnimation=Tween(
开始:边集合。对称(水平:0),
端部:边缘组。对称(水平:25),
).制作动画(
曲线化(
父节点:_控制器,
曲线:Curves.easeOut,
反向曲线:Curves.bounceIn
)..addStatusListener((状态){
如果(状态==AnimationStatus.completed){
_controller.reverse();
}
}),
);
_addListener(()=>setState((){}));
我仍然很好奇是否有一种更有效的方法来做到这一点
FlatButton(
onPressed: () {
setState(() {
isSignUp = !isSignUp;
_controller.forward();
});
Future.delayed(Duration(seconds: 1));
setState(() {
_controller.reverse();
});
_insetAnimation = Tween<EdgeInsetsGeometry>(
begin: EdgeInsets.symmetric(horizontal: 0),
end: EdgeInsets.symmetric(horizontal: 25),
).animate(
CurvedAnimation(
parent: _controller,
curve: Curves.easeOut,
reverseCurve: Curves.bounceIn
)..addStatusListener((status) {
if (status == AnimationStatus.completed) {
_controller.reverse();
}
}),
);
_insetAnimation.addListener(() => setState(() {}));