AppBar — définition, configuration et widgets Flutter

Auteur : IT Sectr Publié le : 2026-07-02 Temps de lecture : 9 min

AppBar est un widget de panneau supérieur d’écran dans Flutter qui implémente le composant Material Design avec un titre, des actions, un bouton de navigation et des onglets. Contrairement à un panneau personnalisé avec Row ou Stack, AppBar fournit une architecture prête avec une hauteur correcte de 56dp (48dp à l’état replié) et une gestion automatique de SafeArea. Selon Flutter API Reference (2026), AppBar prend en charge l’animation au défilement via SliverAppBar et l’intégration avec Material 3 via le paramètre forceMaterialTransparency. Dans une application mobile typique, AppBar agit comme un hub de navigation et d’informations, combinant le titre de la page, les actions système et le changement de sections.

Points clés

  • AppBar — widget de panneau supérieur dans Flutter avec titre, actions, leading et prise en charge de TabBar et Material 3
  • Title — le texte du titre, centré ou aligné à gauche selon la plateforme
  • Actions — une liste de widgets d’action (IconButton, PopupMenuButton) placés à droite dans AppBar
  • Leading — bouton de navigation à gauche (icône « hamburger » pour Drawer ou bouton « Retour » pour les écrans imbriqués)
  • Bottom — zone inférieure d’AppBar pour intégrer TabBar, PreferredSize ou des widgets personnalisés

Qu’est-ce qu’AppBar dans Flutter

AppBar est un composant Material standard de panneau supérieur qui apparaît en haut d’un Scaffold. Il contient le titre de l’écran, un bouton de navigation (généralement une icône « hamburger » ou une flèche « Retour ») et des actions — des icônes qui ouvrent la recherche, les paramètres ou d’autres fonctions. AppBar s’adapte automatiquement à la plateforme : sous Android, il utilise l’ombre inférieure Material standard, sous iOS — un design plus plat avec transparence.

AppBar implémente l’interface PreferredSizeWidget, ce qui signifie que sa hauteur est fixe et connue avant la construction. Par défaut, la hauteur d’AppBar est de 56dp sous Android et 44dp sous iOS en orientation portrait, en tenant compte de SafeArea en haut. Cette fonctionnalité permet à Scaffold de calculer à l’avance l’espace disponible pour le body, évitant ainsi une recomposition lors du rendu.

Selon Flutter Material Library Guide (2026), AppBar a connu plusieurs itérations : dans Flutter 1.x, c’était un simple conteneur avec du texte, dans Flutter 2.x, il a obtenu la prise en charge de Material 3 et flexibleSpace, et dans Flutter 3.x — l’intégration avec System UI (couleur de la barre d’état, transparence). L’AppBar moderne prend en charge Dynamic Color de Material You sur les appareils Android 12+.

Structure d’AppBar : propriétés et paramètres

AppBar fournit un ensemble de paramètres qui contrôlent chaque partie du panneau supérieur. Comprendre ces propriétés permet de personnaliser le panneau de manière flexible pour toute exigence de conception sans créer de solutions personnalisées.

PropriétéTypeDescription
titleWidget?Titre principal du panneau, généralement Text avec le nom de l’écran
leadingWidget?Widget à gauche du titre (bouton « Retour » ou icône de menu)
actionsList<Widget>?Liste des widgets d’action à droite (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Zone inférieure pour TabBar ou widget personnalisé
flexibleSpaceWidget?Widget d’arrière-plan qui s’anime au défilement dans SliverAppBar
backgroundColorColor?Couleur de fond du panneau, remplaçant la couleur du thème
elevationdoubleOmbre sous le panneau, créant un effet de surélévation par rapport au contenu
centerTitlebool?Centrage du titre (true — comportement Material 3, false — style Android)

Title et leading : configuration du titre et de la navigation

La propriété title accepte n’importe quel widget, mais le plus courant est d’utiliser Text avec une configuration de style via TextStyle. Pour les titres longs, il est recommandé d’envelopper title dans Flexible afin que le texte soit correctement tronqué lorsque l’espace est limité. La propriété leading est automatiquement remplacée par BackButton lors de la navigation vers un écran imbriqué via Navigator.push, si elle n’est pas définie explicitement.

Actions : placement des icônes d’action

La liste actions contient des widgets alignés sur le bord droit d’AppBar. Chaque élément ne doit pas dépasser 48dp de largeur (standard Material Design). Pour regrouper les actions, utilisez PopupMenuButton — cela masque les options moins importantes dans un menu déroulant et respecte les recommandations Material concernant la densité de l’interface.

Personnalisation d’AppBar : styles, couleurs et comportement

AppBar prend en charge une personnalisation approfondie via les propriétés de couleur, d’ombre et de remplissage. Le style de base est hérité du thème de l’application, mais chaque propriété peut être remplacée individuellement. Examinons les principaux scénarios de configuration.

La couleur de fond d’AppBar est définie via backgroundColor. Si elle n’est pas spécifiée, appBarTheme de ThemeData est utilisé. Dans Material 3, la couleur d’AppBar est automatiquement calculée à partir de ColorScheme.primary, mais peut être remplacée pour un écran spécifique. Pour une AppBar transparente (souvent utilisée dans les profils), définissez backgroundColor : Colors.transparent avec elevation : 0.

La propriété elevation contrôle l’ombre sous AppBar. La valeur 0 supprime l’ombre, créant un effet de panneau « plat », pertinent pour Material 3. La valeur 4 donne l’ombre standard Material Design. Pour un contrôle personnalisé de l’ombre, utilisez shadowColor — la couleur d’ombre qui sépare visuellement le panneau du contenu.

Pour contrôler la couleur du texte dans AppBar, utilisez foregroundColor. Cette propriété affecte la couleur du titre, des icônes et du texte dans actions. Lors du changement de backgroundColor, un foregroundColor contrastant est automatiquement sélectionné, mais il peut être imposé pour des designs non standard.

SliverAppBar : version animée d’AppBar

SliverAppBar est une extension d’AppBar pour une utilisation dans CustomScrollView qui prend en charge l’animation au défilement : repliement, effet parallaxe et fixation. Contrairement à une AppBar standard, SliverAppBar est un widget sliver et peut changer de taille dynamiquement en fonction de la position de défilement.

Les modes principaux de SliverAppBar sont déterminés par une combinaison des propriétés pinned, floating et snap. En mode pinned, le panneau reste toujours visible en haut de l’écran. En mode floating, il apparaît lors du défilement arrière. La combinaison floating + snap crée un comportement de panneau « collant » qui apparaît au moindre défilement vers le haut, souvent utilisé dans les fils d’actualité.

Selon Flutter API SliverAppBar (2026), pour utiliser SliverAppBar, il faut remplacer un ListView ou Column standard par CustomScrollView contenant des widgets sliver. Scaffold continue de fonctionner correctement, mais la propriété appBar de Scaffold doit être null — SliverAppBar est placé dans CustomScrollView comme premier sliver.

Exemple de configuration d’AppBar dans une application

Voyons un exemple d’AppBar avec recherche, menu déroulant et TabBar. Ce code illustre une configuration typique du panneau supérieur dans une application de production Flutter.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Catalogue'),
    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('Paramètres')),
          const PopupMenuItem(value: 'about', child: Text('À propos de l’application')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

Dans l’exemple, AppBar contient un titre centré, un bouton d’ouverture de Drawer à gauche, une icône de recherche et un menu déroulant à droite. TabBar en bas permet de basculer entre les catégories de produits. Cette configuration couvre la plupart des scénarios d’applications mobiles : navigation, recherche, options supplémentaires et changement de sections — le tout dans un seul panneau supérieur.

Foire aux questions

Comment modifier la hauteur d’AppBar dans Flutter ?

La hauteur d’AppBar est fixe (56dp) et ne peut pas être modifiée directement. Pour une hauteur personnalisée, utilisez PreferredSize en enveloppant un widget personnalisé de la hauteur souhaitée. Alternativement, utilisez SliverAppBar avec collapsedHeight pour une gestion flexible de la taille à l’état replié sans perdre les fonctionnalités du panneau standard.

Comment supprimer l’ombre sous AppBar ?

Définissez la propriété elevation : 0 dans le constructeur d’AppBar. Cela supprime l’ombre et rend le panneau visuellement plat, ce qui correspond au style Material 3. Pour un contrôle total, utilisez shadowColor : Colors.transparent pour remplacer la couleur d’ombre sans modifier elevation, si vous devez conserver la coordonnée z.

Quelle est la différence entre AppBar et SliverAppBar ?

AppBar est un panneau statique de hauteur fixe, placé dans Scaffold.appBar. SliverAppBar est une version dynamique utilisée dans CustomScrollView qui peut se replier, se fixer et s’animer au défilement. SliverAppBar fournit les propriétés collapsedHeight, expandedHeight, pinned et floating pour une gestion flexible du comportement de défilement.

Comment ajouter la recherche à AppBar ?

Ajoutez un IconButton avec une icône de recherche à la liste des actions. Lors de l’appui, vous pouvez appeler showSearch avec un SearchDelegate personnalisé qui ouvrira l’écran de recherche avec une animation automatique. Alternativement, remplacez le title par un TextField, transformant AppBar en barre de recherche intégrée, pratique pour les catalogues et les listes.

Pourquoi le titre n’est-il pas centré dans AppBar ?

Par défaut, centerTitle est null et le comportement dépend de la plateforme : sous Android, le titre est aligné à gauche, sous iOS — centré. Définissez explicitement centerTitle : true pour forcer le centrage sur les deux plateformes. Si le titre n’est pas centré à cause de leading, vérifiez que leading n’est pas null — sa présence décale le titre vers la droite.

Résumé

  • AppBar — panneau supérieur standard dans Flutter avec titre, leading, actions et bottom pour TabBar, gestion automatique de SafeArea
  • Title — élément central du panneau, acceptant tout widget avec configuration de centrage via centerTitle
  • Actions — liste de widgets d’action à droite, chacun jusqu’à 48dp de large selon le standard Material Design
  • Leading — bouton de navigation à gauche, automatiquement remplacé par BackButton lors de la navigation vers un écran imbriqué
  • SliverAppBar — extension d’AppBar pour CustomScrollView avec prise en charge du repliement, de la fixation et de l’effet parallaxe
  • Material 3 — AppBar prend en charge Dynamic Color, la transparence et NavigationBar via le paramètre forceMaterialTransparency
  • Personnalisation — les propriétés backgroundColor, elevation, foregroundColor et shadowColor permettent un ajustement visuel précis pour le design du projet

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi