Looking to make your text changes in Flutter look smooth and dynamic? Combining AnimatedSwitcher with a state management solution like Riverpod is a great way to do it.
Animate Text Changes Easily
When your app's state updates and causes a Text widget to display different content, you might want that change to animate instead of just popping into place. AnimatedSwitcher is perfect for this.
How AnimatedSwitcher Works
AnimatedSwitcher is a built-in Flutter widget that helps animate the transition between its old child widget and its new child widget when the child changes. By default, it uses a fade animation, but you can customize it using the transitionBuilder.
Using Riverpod for State
Riverpod is used here to watch the application state. When the state changes, the widget rebuilds with the new data. This rebuild is what AnimatedSwitcher needs to potentially trigger an animation.
The Magic is in the Key
The most important part for making AnimatedSwitcher work when the same type of widget (like a Text widget) updates its content is using a ValueKey. You create a ValueKey based on the changing value from your state.
Like this:
ValueKey(state.value.myText)
When the value derived from your state changes, the ValueKey changes. AnimatedSwitcher sees the child widget now has a different key than before, thinks it's a brand new widget, and runs the animation.
Example Animation
The code example shows using a ScaleTransition within AnimatedSwitcher's transitionBuilder to make the text scale in and out when it changes over a duration (e.g., 250 milliseconds) with a specific curve (e.g., Curves.easeInOut).
Not Just for Text
While this example focuses on animating text, AnimatedSwitcher can be used to animate the transition between any two widgets.