AppBar — qué es, configuración y widgets de Flutter

Autor: IT Sectr Publicado: 2026-07-02 Tiempo de lectura: 9 min

AppBar es un widget de panel superior de pantalla en Flutter que implementa el componente Material Design con un título, acciones, botón de navegación y pestañas. A diferencia de un panel personalizado con Row o Stack, AppBar proporciona una arquitectura lista con una altura correcta de 56dp (48dp en estado contraído) y manejo automático de SafeArea. Según Flutter API Reference (2026), AppBar admite animación al desplazarse a través de SliverAppBar e integración con Material 3 mediante el parámetro forceMaterialTransparency. En una aplicación móvil típica, AppBar actúa como un centro de navegación e información, combinando el título de la página, las acciones del sistema y el cambio entre secciones.

Puntos clave

  • AppBar — widget de panel superior en Flutter con título, actions, leading y soporte para TabBar y Material 3
  • Title — texto del título, centrado o alineado a la izquierda según la plataforma
  • Actions — lista de widgets de acción (IconButton, PopupMenuButton) colocados a la derecha en AppBar
  • Leading — botón de navegación a la izquierda (icono de “hamburguesa” para Drawer o botón “Atrás” para pantallas anidadas)
  • Bottom — área inferior de AppBar para incrustar TabBar, PreferredSize o widgets personalizados

Qué es AppBar en Flutter

AppBar es un componente Material estándar de panel superior que se muestra en la parte superior de un Scaffold. Contiene el título de la pantalla, un botón de navegación (generalmente un icono de “hamburguesa” o una flecha “Atrás”) y acciones (iconos que abren búsqueda, configuración u otras funciones). AppBar se adapta automáticamente a la plataforma: en Android usa la sombra inferior Material estándar, en iOS, un diseño más plano con transparencia.

AppBar implementa la interfaz PreferredSizeWidget, lo que significa que su altura es fija y se conoce antes de la construcción. Por defecto, la altura de AppBar es de 56dp en Android y 44dp en iOS en orientación vertical, teniendo en cuenta SafeArea en la parte superior. Esta característica permite que Scaffold calcule el espacio disponible para body de antemano, evitando la recomposición durante el renderizado.

Según Flutter Material Library Guide (2026), AppBar ha pasado por varias iteraciones: en Flutter 1.x era un contenedor simple con texto, en Flutter 2.x obtuvo soporte para Material 3 y flexibleSpace, y en Flutter 3.x, integración con System UI (color de la barra de estado, transparencia). El AppBar moderno admite Dynamic Color de Material You en dispositivos Android 12+.

Estructura de AppBar: propiedades y parámetros

AppBar proporciona un conjunto de parámetros que controlan cada parte del panel superior. Comprender estas propiedades permite personalizar el panel de manera flexible para cualquier requisito de diseño sin crear soluciones personalizadas.

PropiedadTipoDescripción
titleWidget?Título principal del panel, generalmente Text con el nombre de la pantalla
leadingWidget?Widget a la izquierda del título (botón “Atrás” o icono de menú)
actionsList<Widget>?Lista de widgets de acción a la derecha (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Área inferior para TabBar o widget personalizado
flexibleSpaceWidget?Widget de fondo que se anima al desplazarse en SliverAppBar
backgroundColorColor?Color de fondo del panel, que anula el color del tema
elevationdoubleSombra debajo del panel, que crea un efecto de elevación sobre el contenido
centerTitlebool?Centrado del título (true — comportamiento de Material 3, false — estilo Android)

Title y leading: configuración del título y la navegación

La propiedad title acepta cualquier widget, pero lo más común es usar Text con configuración de estilo mediante TextStyle. Para títulos largos, se recomienda envolver title en Flexible para que el texto se trunque correctamente cuando falte espacio. La propiedad leading se reemplaza automáticamente por BackButton al navegar a una pantalla anidada mediante Navigator.push, si no se establece explícitamente.

Actions: colocación de iconos de acción

La lista actions contiene widgets alineados al borde derecho de AppBar. Cada elemento no debe ser más ancho de 48dp (estándar de Material Design). Para agrupar acciones, use PopupMenuButton: esto oculta las opciones menos importantes en un menú desplegable y cumple con las recomendaciones de Material sobre densidad de interfaz.

Personalización de AppBar: estilos, colores y comportamiento

AppBar admite una personalización profunda a través de propiedades de color, sombra y relleno. El estilo básico se hereda del tema de la aplicación, pero cada propiedad se puede anular individualmente. Veamos los principales escenarios de configuración.

El color de fondo de AppBar se establece mediante backgroundColor. Si no se especifica, se usa appBarTheme de ThemeData. En Material 3, el color de AppBar se calcula automáticamente a partir de ColorScheme.primary, pero se puede anular para una pantalla específica. Para un AppBar transparente (a menudo usado en perfiles), establezca backgroundColor: Colors.transparent con elevation: 0.

La propiedad elevation controla la sombra debajo de AppBar. Un valor de 0 elimina la sombra, creando un efecto de panel “plano”, relevante para Material 3. Un valor de 4 proporciona la sombra estándar de Material Design. Para un control personalizado de la sombra, use shadowColor: el color de sombra que separa visualmente el panel del contenido.

Para controlar el color del texto en AppBar, use foregroundColor. Esta propiedad afecta el color del título, los iconos y el texto en actions. Al cambiar backgroundColor, se selecciona automáticamente un foregroundColor contrastante, pero se puede forzar para diseños no estándar.

SliverAppBar: versión animada de AppBar

SliverAppBar es una extensión de AppBar para usar dentro de CustomScrollView que admite animación al desplazarse: contracción, efecto parallax y fijación. A diferencia de un AppBar estándar, SliverAppBar es un widget sliver y puede cambiar de tamaño dinámicamente según la posición de desplazamiento.

Los modos principales de SliverAppBar se determinan mediante una combinación de las propiedades pinned, floating y snap. En modo pinned, el panel siempre permanece visible en la parte superior de la pantalla. En modo floating, aparece al desplazarse hacia atrás. La combinación floating + snap crea un comportamiento de panel “pegajoso” que aparece al mínimo desplazamiento hacia arriba, utilizado a menudo en feeds de noticias.

Según Flutter API SliverAppBar (2026), para usar SliverAppBar es necesario reemplazar un ListView o Column normal con CustomScrollView que contenga widgets sliver. Scaffold continúa funcionando correctamente, pero la propiedad appBar de Scaffold debe ser null — SliverAppBar se coloca dentro de CustomScrollView como el primer sliver.

Ejemplo de configuración de AppBar en una aplicación

Veamos un ejemplo de AppBar con búsqueda, menú desplegable y TabBar. Este código demuestra una configuración típica del panel superior en una aplicación de producción en Flutter.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Catálogo'),
    centerTitle: true,
    leading: IconButton(
      icon: const Icon(Icons.menu),
      onPressed: () => Scaffold.of(context).openDrawer(),
    ),
    actions: [
      IconButton(
        icon: const Icon(Icons.search),
        onPressed: () => showSearch(context: context, delegate: ProductSearch()),
      ),
      PopupMenuButton<String>(
        onSelected: (String value) {},
        itemBuilder: (context) => [
          const PopupMenuItem(value: 'settings', child: Text('Configuración')),
          const PopupMenuItem(value: 'about', child: Text('Acerca de')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

En el ejemplo, AppBar contiene un título centrado, un botón para abrir Drawer a la izquierda, un icono de búsqueda y un menú desplegable a la derecha. TabBar en la parte inferior permite cambiar entre categorías de productos. Esta configuración cubre la mayoría de los escenarios de aplicaciones móviles: navegación, búsqueda, opciones adicionales y cambio de secciones, todo en un solo panel superior.

Preguntas frecuentes

¿Cómo cambiar la altura de AppBar en Flutter?

La altura de AppBar es fija (56dp) y no se puede cambiar directamente. Para una altura personalizada, use PreferredSize envolviendo un widget personalizado de la altura deseada. Alternativamente, use SliverAppBar con collapsedHeight para una gestión flexible del tamaño en estado contraído sin perder la funcionalidad del panel estándar.

¿Cómo eliminar la sombra debajo de AppBar?

Establezca la propiedad elevation: 0 en el constructor de AppBar. Esto elimina la sombra y hace que el panel sea visualmente plano, coincidiendo con el estilo de Material 3. Para un control completo, use shadowColor: Colors.transparent para anular el color de la sombra sin cambiar elevation, si necesita mantener la coordenada z.

¿En qué se diferencia AppBar de SliverAppBar?

AppBar es un panel estático de altura fija, colocado en Scaffold.appBar. SliverAppBar es una versión dinámica utilizada dentro de CustomScrollView que puede contraerse, fijarse y animarse al desplazarse. SliverAppBar proporciona las propiedades collapsedHeight, expandedHeight, pinned y floating para una gestión flexible del comportamiento de desplazamiento.

¿Cómo agregar búsqueda a AppBar?

Agregue un IconButton con icono de búsqueda a la lista de actions. Al presionarlo, puede llamar a showSearch con un SearchDelegate personalizado que abrirá la pantalla de búsqueda con animación automática. Alternativamente, reemplace el title con un TextField, convirtiendo AppBar en una barra de búsqueda en línea, lo cual es conveniente para catálogos y listas.

¿Por qué el título no se centra en AppBar?

Por defecto centerTitle es null, y el comportamiento depende de la plataforma: en Android el título se alinea a la izquierda, en iOS al centro. Establezca explícitamente centerTitle: true para forzar el centrado en ambas plataformas. Si el título no se centra debido a leading, verifique que leading no sea null — su presencia desplaza el título hacia la derecha.

Resumen

  • AppBar — panel superior estándar en Flutter con título, leading, actions y bottom para TabBar, que maneja automáticamente SafeArea
  • Title — elemento central del panel, que acepta cualquier widget con configuración de centrado mediante centerTitle
  • Actions — lista de widgets de acción a la derecha, cada uno de hasta 48dp de ancho según el estándar de Material Design
  • Leading — botón de navegación a la izquierda, reemplazado automáticamente por BackButton al navegar a una pantalla anidada
  • SliverAppBar — extensión de AppBar para CustomScrollView con soporte para contracción, fijación y efecto parallax
  • Material 3 — AppBar admite Dynamic Color, transparencia y NavigationBar mediante el parámetro forceMaterialTransparency
  • Personalización — las propiedades backgroundColor, elevation, foregroundColor y shadowColor permiten un ajuste visual preciso para el diseño del proyecto

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también