Flutter 颤振中具有曲线特性的动画
在我的应用程序中,我有一个容器,我想在单击时以慢曲线开始旋转,然后保持旋转,然后下一次单击将以慢曲线停止 如何在“颤振”中制作曲线动画 像这样的事情:Flutter 颤振中具有曲线特性的动画,flutter,animation,curve,Flutter,Animation,Curve,在我的应用程序中,我有一个容器,我想在单击时以慢曲线开始旋转,然后保持旋转,然后下一次单击将以慢曲线停止 如何在“颤振”中制作曲线动画 像这样的事情: 制作动画控制器和动画 在Stop上结束动画,并在Start上重复动画 脚手架( 背景颜色:颜色。蓝灰色, 正文:中( 子:列( mainAxisAlignment:mainAxisAlignment.center, 儿童:[ 变换。旋转( 角度:_animation.value, 子:容器( 颜色:颜色。绿色, 身高:80, 宽度:80, 填充
Stop
上结束动画,并在Start
上重复动画脚手架(
背景颜色:颜色。蓝灰色,
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
变换。旋转(
角度:_animation.value,
子:容器(
颜色:颜色。绿色,
身高:80,
宽度:80,
填充:所有(30),
),
),
填充物(
填充:仅限常量边集(顶部:20.0),
孩子:升起按钮(
颜色:颜色,白色,
子:文本(_动画?“停止”:“开始”),
已按下:(){
如果(_设置动画){
_AnimatController.animateTo(1,
持续时间:持续时间(秒数:3),曲线:曲线。轻松);
}否则{
_animController.repeat();
}
设置状态(()=>\u动画=!\u动画);
},
),
),
],
),
),
)
结果:
Stop
上结束动画,并在Start
上重复动画脚手架(
背景颜色:颜色。蓝灰色,
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
变换。旋转(
角度:_animation.value,
子:容器(
颜色:颜色。绿色,
身高:80,
宽度:80,
填充:所有(30),
),
),
填充物(
填充:仅限常量边集(顶部:20.0),
孩子:升起按钮(
颜色:颜色,白色,
子:文本(_动画?“停止”:“开始”),
已按下:(){
如果(_设置动画){
_AnimatController.animateTo(1,
持续时间:持续时间(秒数:3),曲线:曲线。轻松);
}否则{
_animController.repeat();
}
设置状态(()=>\u动画=!\u动画);
},
),
),
],
),
),
)
结果:
请放置gif图像以演示所需的行为。将您尝试过的内容进行编码。刚刚编辑了我的问题,并带有指向gif的链接,具有我想要的动画类型。请放置gif图像以演示所需的行为。将您尝试过的内容进行编码。刚刚编辑了我的问题,带有我想要的那种动画的gif链接
AnimationController _animController;
Animation<double> _animation;
@override
void initState() {
super.initState();
_animController = AnimationController(
duration: Duration(seconds: 2),
vsync: this,
);
_animation =
Tween<double>(begin: 0, end: 2 * math.pi).animate(_animController)
..addListener(() {
setState(() {});
});
}
@override
void dispose() {
_animController.dispose();
super.dispose();
}
var _animating = false;
Scaffold(
backgroundColor: Colors.blueGrey,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Transform.rotate(
angle: _animation.value,
child: Container(
color: Colors.green,
height: 80,
width: 80,
padding: EdgeInsets.all(30),
),
),
Padding(
padding: const EdgeInsets.only(top: 20.0),
child: RaisedButton(
color: Colors.white,
child: Text(_animating ? "Stop" : "Start"),
onPressed: () {
if (_animating) {
_animController.animateTo(1,
duration: Duration(seconds: 3), curve: Curves.ease);
} else {
_animController.repeat();
}
setState(() => _animating = !_animating);
},
),
),
],
),
),
)