SliverAppBar collapsible en Flutter: ejercicio resuelto
SliverAppBar collapsible en Flutter: ejercicio resuelto
AppBar es fijo. SliverAppBar dentro de un CustomScrollView se expande, colapsa y ancla según el scroll, creando el efecto de cabecera que ves en perfiles de redes sociales o pantallas de detalle de producto.
Enunciado
Crea una pantalla de perfil con:
- Cabecera colapsable con imagen de fondo y nombre de usuario.
- Tabs ancladas al tope cuando la cabecera colapsa completamente.
- Lista de contenido con 30 ítems debajo de los tabs.
- Botón de acción flotante que se oculta al bajar y reaparece al subir.
Dependencias
Solo Flutter SDK.
Solución completa
Resultado esperado
- Al hacer scroll hacia abajo, la cabecera con la imagen se colapsa hasta quedar solo el
AppBarcon el nombre. - Los tabs se anclan justo debajo del AppBar y no desaparecen.
- El FAB se oculta suavemente al bajar y reaparece al subir.
Parámetros clave de SliverAppBar
| Parámetro | Efecto |
|---|---|
pinned: true | El AppBar colapsado permanece visible |
floating: true | El AppBar reaparece al primer scroll hacia arriba |
snap: true | Requiere floating: true; el AppBar salta al completo al aparecer |
stretch: true | Se estira al hacer overscroll (iOS style) |
expandedHeight | Altura máxima cuando está expandido |
Errores frecuentes
SliverAppBarfuera deCustomScrollView: lanzaFlutterError: SliverAppBar must be used inside a CustomScrollView.- Usar
Scaffold.appBarjunto aSliverAppBar: se duplican las AppBars. Usa solo una. SliverPersistentHeadersin delegate: la clase abstracta necesita implementación o usaSliverToBoxAdapter+Positionedpara casos simples.
Aplicación práctica
Pantallas de perfil, fichas de producto en e-commerce, listas con cabecera informativa y cualquier UI donde el contenido principal necesita maximizar el espacio de lectura.
Siguiente ejercicio recomendado
- Animaciones implícitas en Flutter: ejercicio resuelto
- CustomPainter en Flutter: ejercicio resuelto
- Listas largas e imágenes 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
¿Cómo añado una imagen real de red como fondo?
Reemplaza el Container con gradiente por:
Dentro del Stack de FlexibleSpaceBar.background.
¿Cómo consigo el efecto parallax?
collapseMode: CollapseMode.parallax en FlexibleSpaceBar. Con CollapseMode.pin el fondo permanece fijo; con parallax se mueve más lento que el scroll, creando profundidad.
¿Puedo tener varios SliverList en el mismo CustomScrollView?
Sí. Añade tantos slivers como quieras en la lista slivers: [...]. Se renderizan en orden vertical.