I have a RaisedButton
. I want to animate it's color from green to red, and vice versa, every time the user clicks it.
How this could be done?
We shall use controller. reverse() function to reverse the animation. When you run this application and click on the colored button, color animation toggles using controller. forward() and controller.
What you can do is create a "color" property (not required to set any value for it) in Zone class. Then set the color property of RaisedButton to zone.
Create RaisedButton and wrap it with Center widget. Give the child of RaisedButton as a Text widget. Perform onPressed function when the button is tapped. Perform optional onLongPress function when button is long pressed.
Flutter RaisedButton. In Flutter, RaisedButton widget is a material design concept of a button with elevation. It provides dimensionality to your UI along z-axis with clues of shadow. You can set many properties of RaisedButton like text color, button color, color of button when disabled, animation time, shape, elevation, padding, etc.
The Raised Button in flutter by default comes with a Argument or Prop named as color. The color argument is used to Set Change Raised Button Background Color in Flutter iOS Android mobile app. Color can support all the useful formats like Hex color code, ARGB, RGBA and also color constants.
When you run this application and click on the colored button, color animation toggles using controller.forward () and controller.reverse (). In this Flutter Tutorial, we learned how to animate Color property using Animation and AnimationController classes.
It provides dimensionality to your UI along z-axis with clues of shadow. You can set many properties of RaisedButton like text color, button color, color of button when disabled, animation time, shape, elevation, padding, etc. You can also disable the button using enabled property.
You can use AnimatedContainer
as raiseButton child . and when color changed it will be animated!
RaisedButton(
onPressed: null,
padding: EdgeInsets.all(0),
child: AnimatedContainer(
color: pageIndex == 1 ? Color(0xFF4B4B4B) : Color(0xFFD8D8D8),
duration: Duration(milliseconds: 300),
),
)
and its just a container so it can have child like text..
class ChangeRaisedButtonColor extends StatefulWidget {
@override
ChangeRaisedButtonColorState createState() => ChangeRaisedButtonColorState();
}
class ChangeRaisedButtonColorState extends State<ChangeRaisedButtonColor>
with SingleTickerProviderStateMixin {
AnimationController _animationController;
Animation _colorTween;
@override
void initState() {
_animationController =
AnimationController(vsync: this, duration: Duration(milliseconds: 300));
_colorTween = ColorTween(begin: Colors.red, end: Colors.green)
.animate(_animationController);
super.initState();
}
@override
void dispose() {
super.dispose();
_animationController.dispose();
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: _colorTween,
builder: (context, child) => RaisedButton(
child: Text("Change my color"),
color: _colorTween.value,
onPressed: () {
if (_animationController.status == AnimationStatus.completed) {
_animationController.reverse();
} else {
_animationController.forward();
}
},
),
);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With