Animaciones implícitas en Flutter: ejercicio resuelto
Animaciones implícitas en Flutter: ejercicio resuelto
Las animaciones implícitas son las más fáciles de implementar en Flutter: cambias un valor, el widget anima la transición automáticamente. No necesitas AnimationController ni Tween explícitos. La regla: si existe un AnimatedFoo para tu widget Foo, úsalo.
Enunciado
Construye una pantalla demo que muestre:
AnimatedContainer: tarjeta que cambia de tamaño, color y radio de borde.AnimatedOpacity: panel que aparece y desaparece suavemente.AnimatedSwitcher: número que hace flip al cambiar.TweenAnimationBuilder: barra de progreso personalizada animada.
Dependencias
Solo Flutter SDK.
Solución completa
Resultado esperado
- La tarjeta azul se expande suavemente a tamaño doble con borde redondeado al pulsar el botón.
- El panel verde se desvanece y reaparece con
AnimatedOpacity. - El número hace un efecto de escala al cambiar (no un corte brusco).
- La barra de progreso se llena animadamente con el color cambiando de rojo a verde.
Tabla de widgets implícitos más usados
| Widget | Qué anima |
|---|---|
AnimatedContainer | Cualquier propiedad de Container |
AnimatedOpacity | Opacidad |
AnimatedPadding | Padding |
AnimatedAlign | Alineación |
AnimatedDefaultTextStyle | Estilo de texto en árbol |
AnimatedPositioned | Posición en Stack |
AnimatedSwitcher | Transición entre widgets distintos |
TweenAnimationBuilder | Cualquier valor con interpolación customizable |
Cuándo usar animaciones explícitas
Si necesitas:
- Control fino del ciclo (pause, reverse, loop):
AnimationController. - Animaciones coordinadas entre varios widgets:
AnimatedBuilder. - Animaciones de física (spring, rebote):
SpringSimulation.
Errores frecuentes
AnimatedSwitchersinValueKey: si el nuevo widget tiene el mismo tipo que el anterior, Flutter reutiliza el elemento y no anima la transición.- Cambiar
curvesin cambiarduration: las curvas conCurves.bounceOutnecesitan duración suficiente o el bounce se corta. TweenAnimationBuildercontweenque siempre crea nueva instancia: mueve elTweenfuera delbuildo usabegin: nullpara animar desde el valor anterior.
Aplicación práctica
Las animaciones implícitas convierten una UI plana en una experiencia fluida sin complejidad extra. Úsalas por defecto; pasa a animaciones explícitas solo cuando necesites control que los widgets implícitos no ofrecen.
Siguiente ejercicio recomendado
- BottomSheet modal en Flutter: ejercicio resuelto
- Hero animations en Flutter: ejercicio resuelto
- CustomPainter en Flutter: ejercicio resuelto
- Todos los ejercicios de Flutter
Práctica guiada y siguiente paso
- Más ejercicios de Flutter
- Ejercicios C para reforzar fundamentos
- Programación en C en 100 ejercicios resueltos
- Ver el libro en Amazon (incluido en Kindle Unlimited)
- Suscribirte a la newsletter
FAQ
¿Las animaciones implícitas afectan al rendimiento?
Mínimamente. Flutter optimiza los repaints al área que cambia. Si tienes muchas tarjetas animándose a la vez, asegúrate de que cada AnimatedContainer está en un widget separado para aislar los rebuilds.
¿Puedo combinar AnimatedContainer con GestureDetector?
Sí. AnimatedContainer es un widget normal; envuélvelo en GestureDetector o InkWell para hacer la tarjeta tappable.
¿AnimatedSwitcher funciona con cualquier widget?
Sí, pero cada widget que entra y sale debe tener una Key diferente (normalmente ValueKey) para que Flutter detecte el cambio y aplique la transición.