我正在尝试动画图标在我的应用程序每当它是被点击。我实现了我想要的简单动画,但它总是动画一次后,我来到那个屏幕。我希望每次点击iconbutton
时,它都应该是动画,并且它应该顺时针旋转,持续时间为2秒,当再次按下时,它应该逆时针旋转,持续时间为2秒。请帮帮我
这里是代码的部分-
.......
AnimationController _controller;
Animation<double> _animation;
@override
void initState() {
// TODO: implement initState
super.initState();
_cameraController = CameraController(cameras[0], ResolutionPreset.medium, imageFormatGroup: ImageFormatGroup.jpeg);
cameraValue = _cameraController.initialize();
_fetchAssets();
_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
value: 025,
lowerBound: 0.0,
upperBound: 1.0,
)..repeat();
_animation = CurvedAnimation(parent: _controller, curve: Curves.linear);
_controller.forward();
}
.......
RotationTransition(
turns: _animation,
child: IconButton(
icon: Icon(
Icons.flip_camera_ios,
color: Colors.white,
size: MediaQuery.of(context).size.width*0.07,
),
onPressed: () async {
setState(() {
if(cameraPosition=="Rear") {
cameraPosition="Front";
}
else if(cameraPosition=="Front"){
cameraPosition="Rear";
}
});
_cameraController = CameraController(
cameras[
cameraPosition=="Rear" ? 0
: 1
],
ResolutionPreset.medium,
);
},
),
),
........
使用以下flutter包:https://pub.dev/packages/scale_button
ScaleButton(
child: yourIcon())
如果您将图标动画代码放在initState()内部,那么每次启动/重新启动屏幕时只会触发一次。为了使它在每次按下IconButton时都被触发,您应该将图标动画代码复制或移动到icon按钮的onPressed属性中,该属性位于setState()函数中。