I have a IconButton
, Normally, It's icon is Icons.expand_more
but When I press that its icon should be Icons.expand_less
. I want to animated this so that if I press that button, it will rotate and point the downwords from upwords. and same when I press the expand_less
then it should become expand_more
with rotating animation. How can I acheive this ?
below is my code :
IconButton(
icon: _expanded ? Icon(Icons.expand_less) : Icon(Icons.expand_more),
onPressed: () {
setState(() {
_expanded = !_expanded;
});
},
)
I tried to use animatedContainer but it didn't work as I am using two different icons and that rotation effect I cannot acheive with this. I also tried to rotate the icon with below approach but it cannot show the animation when it is rotating from 0 to 180 degree.
IconButton(
icon: AnimatedContainer(
duration: Duration(seconds: 3),
child: Transform.rotate(
angle: _expanded ? 0 : 180 * math.pi / 180,
child: Icon(Icons.expand_less))),
// icon:
// _expanded ? Icon(Icons.expand_less) : Icon(Icons.expand_more),
onPressed: () {
setState(() {
_expanded = !_expanded;
});
},
)
This is before expansion :
This is after expansion :
I want the rotation animation on button click.