A widget to apply a crossfade animation between different states and/or widgets. It's more flexible than e.g. the official
Additionally it's really easy to use and efficient.
CrossFade<int>( value: value, builder: (context, i) => Text('$i'), )
It also animates between the different sizes of the widgets as you can see here:
CrossFade can be wrapped in anything and it will animate its size along with it:
DecoratedBox( position: DecorationPosition.foreground, decoration: BoxDecoration(border: Border.all(width: 3.0)), child: CrossFade<int>( value: index, builder: (context, i) => widgets[i], ), ),