AppBar — cos’è, configurazione e widget Flutter

Autore: IT Sectr Pubblicato: 2026-07-02 Tempo di lettura: 9 min

AppBar è un widget del pannello superiore dello schermo in Flutter che implementa il componente Material Design con titolo, azioni, pulsante di navigazione e schede. A differenza di un pannello personalizzato con Row o Stack, AppBar fornisce un’architettura pronta con altezza corretta di 56dp (48dp in stato compresso) e gestione automatica di SafeArea. Secondo Flutter API Reference (2026), AppBar supporta l’animazione durante lo scorrimento tramite SliverAppBar e l’integrazione con Material 3 tramite il parametro forceMaterialTransparency. In un’applicazione mobile tipica, AppBar funge da hub di navigazione e informazione, combinando il titolo della pagina, le azioni di sistema e il cambio tra sezioni.

Punti chiave

  • AppBar — widget del pannello superiore in Flutter con titolo, actions, leading e supporto per TabBar e Material 3
  • Title — il testo del titolo, centrato o allineato a sinistra in base alla piattaforma
  • Actions — un elenco di widget azione (IconButton, PopupMenuButton) posizionati a destra in AppBar
  • Leading — pulsante di navigazione a sinistra (icona “hamburger” per Drawer o pulsante “Indietro” per schermi annidati)
  • Bottom — area inferiore di AppBar per incorporare TabBar, PreferredSize o widget personalizzati

Cos’è AppBar in Flutter

AppBar è un componente Material standard del pannello superiore che appare nella parte superiore di uno Scaffold. Contiene il titolo dello schermo, un pulsante di navigazione (di solito un’icona “hamburger” o una freccia “Indietro”) e azioni — icone che aprono ricerca, impostazioni o altre funzioni. AppBar si adatta automaticamente alla piattaforma: su Android utilizza l’ombra inferiore Material standard, su iOS — un design più piatto con trasparenza.

AppBar implementa l’interfaccia PreferredSizeWidget, il che significa che la sua altezza è fissa e nota prima della costruzione. Per impostazione predefinita, l’altezza di AppBar è di 56dp su Android e 44dp su iOS in orientamento ritratto, tenendo conto di SafeArea nella parte superiore. Questa funzionalità consente a Scaffold di calcolare in anticipo lo spazio disponibile per il body, evitando la ricomposizione durante il rendering.

Secondo Flutter Material Library Guide (2026), AppBar ha attraversato diverse iterazioni: in Flutter 1.x era un semplice contenitore con testo, in Flutter 2.x ha ottenuto il supporto per Material 3 e flexibleSpace, e in Flutter 3.x — l’integrazione con System UI (colore della barra di stato, trasparenza). L’AppBar moderna supporta Dynamic Color di Material You sui dispositivi Android 12+.

Struttura di AppBar: proprietà e parametri

AppBar fornisce un insieme di parametri che controllano ogni parte del pannello superiore. Comprendere queste proprietà consente di personalizzare il pannello in modo flessibile per qualsiasi requisito di progettazione senza creare soluzioni personalizzate.

ProprietàTipoDescrizione
titleWidget?Titolo principale del pannello, di solito Text con il nome dello schermo
leadingWidget?Widget a sinistra del titolo (pulsante “Indietro” o icona del menu)
actionsList<Widget>?Elenco di widget azione a destra (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Area inferiore per TabBar o widget personalizzato
flexibleSpaceWidget?Widget di sfondo che si anima durante lo scorrimento in SliverAppBar
backgroundColorColor?Colore di sfondo del pannello, sovrascrive il colore del tema
elevationdoubleOmbra sotto il pannello, crea un effetto di sollevamento sopra il contenuto
centerTitlebool?Centratura del titolo (true — comportamento Material 3, false — stile Android)

Title e leading: configurazione del titolo e della navigazione

La proprietà title accetta qualsiasi widget, ma il più comune è l’uso di Text con configurazione di stile tramite TextStyle. Per titoli lunghi, si consiglia di avvolgere title in Flexible in modo che il testo venga troncato correttamente quando lo spazio è limitato. La proprietà leading viene automaticamente sostituita da BackButton durante la navigazione verso uno schermo annidato tramite Navigator.push, se non impostata esplicitamente.

Actions: posizionamento delle icone azione

L’elenco actions contiene widget allineati al bordo destro di AppBar. Ogni elemento non deve essere più largo di 48dp (standard Material Design). Per raggruppare le azioni, utilizzare PopupMenuButton — questo nasconde le opzioni meno importanti in un menu a discesa e rispetta le raccomandazioni Material sulla densità dell’interfaccia.

Personalizzazione di AppBar: stili, colori e comportamento

AppBar supporta una personalizzazione approfondita tramite proprietà di colore, ombra e riempimento. Lo stile di base viene ereditato dal tema dell’applicazione, ma ogni proprietà può essere sovrascritta individualmente. Esaminiamo i principali scenari di configurazione.

Il colore di sfondo di AppBar viene impostato tramite backgroundColor. Se non specificato, viene utilizzato appBarTheme da ThemeData. In Material 3, il colore di AppBar viene calcolato automaticamente da ColorScheme.primary, ma può essere sovrascritto per uno schermo specifico. Per un’AppBar trasparente (spesso utilizzata nei profili), impostare backgroundColor: Colors.transparent con elevation: 0.

La proprietà elevation controlla l’ombra sotto AppBar. Il valore 0 rimuove l’ombra, creando un effetto di pannello “piatto”, pertinente per Material 3. Il valore 4 fornisce l’ombra standard di Material Design. Per un controllo personalizzato dell’ombra, utilizzare shadowColor — il colore dell’ombra che separa visivamente il pannello dal contenuto.

Per controllare il colore del testo in AppBar, utilizzare foregroundColor. Questa proprietà influisce sul colore del titolo, delle icone e del testo in actions. Quando si cambia backgroundColor, viene automaticamente selezionato un foregroundColor contrastante, ma può essere forzato per design non standard.

SliverAppBar: versione animata di AppBar

SliverAppBar è un’estensione di AppBar per l’uso all’interno di CustomScrollView che supporta l’animazione durante lo scorrimento: compressione, effetto parallasse e fissaggio. A differenza di un’AppBar standard, SliverAppBar è un widget sliver e può cambiare dimensione dinamicamente in base alla posizione di scorrimento.

Le modalità principali di SliverAppBar sono determinate da una combinazione delle proprietà pinned, floating e snap. In modalità pinned, il pannello rimane sempre visibile nella parte superiore dello schermo. In modalità floating, appare durante lo scorrimento all’indietro. La combinazione floating + snap crea un comportamento di pannello “appiccicoso” che appare al minimo scorrimento verso l’alto, spesso utilizzato nei feed di notizie.

Secondo Flutter API SliverAppBar (2026), per utilizzare SliverAppBar è necessario sostituire un normale ListView o Column con CustomScrollView contenente widget sliver. Scaffold continua a funzionare correttamente, ma la proprietà appBar di Scaffold deve essere null — SliverAppBar viene posizionato all’interno di CustomScrollView come primo sliver.

Esempio di configurazione di AppBar in un’applicazione

Vediamo un esempio di AppBar con ricerca, menu a discesa e TabBar. Questo codice mostra una configurazione tipica del pannello superiore in un’applicazione di produzione in Flutter.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Catalogo'),
    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('Impostazioni')),
          const PopupMenuItem(value: 'about', child: Text('Informazioni sull’App')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

Nell’esempio, AppBar contiene un titolo centrato, un pulsante di apertura Drawer a sinistra, un’icona di ricerca e un menu a discesa a destra. TabBar in basso consente di passare da una categoria di prodotti all’altra. Questa configurazione copre la maggior parte degli scenari delle applicazioni mobili: navigazione, ricerca, opzioni aggiuntive e cambio di sezioni — tutto in un unico pannello superiore.

Domande frequenti

Come modificare l’altezza di AppBar in Flutter?

L’altezza di AppBar è fissa (56dp) e non può essere modificata direttamente. Per un’altezza personalizzata, utilizzare PreferredSize avvolgendo un widget personalizzato dell’altezza desiderata. In alternativa, utilizzare SliverAppBar con collapsedHeight per una gestione flessibile delle dimensioni in stato compresso senza perdere la funzionalità del pannello standard.

Come rimuovere l’ombra sotto AppBar?

Impostare la proprietà elevation: 0 nel costruttore di AppBar. Questo rimuove l’ombra e rende il pannello visivamente piatto, in linea con lo stile Material 3. Per un controllo completo, utilizzare shadowColor: Colors.transparent per sovrascrivere il colore dell’ombra senza modificare elevation, se è necessario mantenere la coordinata z.

Qual è la differenza tra AppBar e SliverAppBar?

AppBar è un pannello statico di altezza fissa, posizionato in Scaffold.appBar. SliverAppBar è una versione dinamica utilizzata all’interno di CustomScrollView che può comprimersi, fissarsi e animarsi durante lo scorrimento. SliverAppBar fornisce le proprietà collapsedHeight, expandedHeight, pinned e floating per una gestione flessibile del comportamento di scorrimento.

Come aggiungere la ricerca ad AppBar?

Aggiungere un IconButton con icona di ricerca all’elenco actions. Alla pressione, è possibile chiamare showSearch con un SearchDelegate personalizzato che aprirà lo schermo di ricerca con animazione automatica. In alternativa, sostituire il title con un TextField, trasformando AppBar in una barra di ricerca inline, comoda per cataloghi ed elenchi.

Perché il titolo non viene centrato in AppBar?

Per impostazione predefinita centerTitle è null e il comportamento dipende dalla piattaforma: su Android il titolo è allineato a sinistra, su iOS — centrato. Impostare esplicitamente centerTitle: true per forzare la centratura su entrambe le piattaforme. Se il titolo non viene centrato a causa di leading, verificare che leading non sia null — la sua presenza sposta il titolo verso destra.

Riepilogo

  • AppBar — pannello superiore standard in Flutter con titolo, leading, actions e bottom per TabBar, gestione automatica di SafeArea
  • Title — elemento centrale del pannello, accetta qualsiasi widget con configurazione di centratura tramite centerTitle
  • Actions — elenco di widget azione a destra, ciascuno fino a 48dp di larghezza secondo lo standard Material Design
  • Leading — pulsante di navigazione a sinistra, automaticamente sostituito da BackButton durante la navigazione verso schermi annidati
  • SliverAppBar — estensione di AppBar per CustomScrollView con supporto per compressione, fissaggio ed effetto parallasse
  • Material 3 — AppBar supporta Dynamic Color, trasparenza e NavigationBar tramite il parametro forceMaterialTransparency
  • Personalizzazione — le proprietà backgroundColor, elevation, foregroundColor e shadowColor consentono una regolazione visiva precisa per il design del progetto

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche