AppBar ist ein Widget für die obere Bildschirmleiste in Flutter, das die Material Design-Komponente mit Titel, Aktionen, Navigationsschaltfläche und Tabs implementiert. Im Gegensatz zu einem benutzerdefinierten Panel mit Row oder Stack bietet AppBar eine fertige Architektur mit korrekter Höhe von 56dp (48dp im eingeklappten Zustand) und automatischer SafeArea-Behandlung. Laut Flutter API Reference (2026) unterstützt AppBar Scroll-Animationen über SliverAppBar und die Integration mit Material 3 über den Parameter forceMaterialTransparency. In einer typischen mobilen Anwendung fungiert AppBar als Navigations- und Informations-Hub, der den Seitentitel, Systemaktionen und das Umschalten zwischen Abschnitten vereint.
Wichtige Punkte
AppBar ist eine standardmäßige Material-Komponente für die obere Leiste, die oben in einem Scaffold angezeigt wird. Sie enthält den Bildschirmtitel, eine Navigationsschaltfläche (normalerweise ein „Hamburger“-Symbol oder ein „Zurück“-Pfeil) und Aktionen — Symbole, die Suche, Einstellungen oder andere Funktionen öffnen. AppBar passt sich automatisch an die Plattform an: Unter Android wird der standardmäßige Material-Unterschatten verwendet, unter iOS — ein flacheres Design mit Transparenz.
AppBar implementiert das PreferredSizeWidget-Interface, was bedeutet, dass seine Höhe festgelegt und vor dem Aufbau bekannt ist. Standardmäßig beträgt die AppBar-Höhe 56dp unter Android und 44dp unter iOS im Hochformat, unter Berücksichtigung von SafeArea oben. Diese Funktion ermöglicht es Scaffold, den verfügbaren Platz für den Body im Voraus zu berechnen und eine Neuzusammensetzung während des Renderns zu vermeiden.
Laut Flutter Material Library Guide (2026) hat AppBar mehrere Iterationen durchlaufen: In Flutter 1.x war es ein einfacher Container mit Text, in Flutter 2.x erhielt es Unterstützung für Material 3 und flexibleSpace, und in Flutter 3.x — Integration mit System UI (Statusleistenfarbe, Transparenz). Die moderne AppBar unterstützt Dynamic Color von Material You auf Android 12+ Geräten.
AppBar bietet eine Reihe von Parametern, die jeden Teil der oberen Leiste steuern. Das Verständnis dieser Eigenschaften ermöglicht eine flexible Anpassung des Panels an beliebige Designanforderungen, ohne benutzerdefinierte Lösungen erstellen zu müssen.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
| title | Widget? | Haupttitel des Panels, normalerweise Text mit dem Bildschirmnamen |
| leading | Widget? | Widget links vom Titel („Zurück“-Schaltfläche oder Menüsymbol) |
| actions | List<Widget>? | Liste der Aktions-Widgets rechts (IconButton, PopupMenuButton) |
| bottom | PreferredSizeWidget? | Unterer Bereich für TabBar oder benutzerdefiniertes Widget |
| flexibleSpace | Widget? | Hintergrund-Widget, das beim Scrollen in SliverAppBar animiert |
| backgroundColor | Color? | Hintergrundfarbe des Panels, überschreibt die Designfarbe |
| elevation | double | Schatten unter dem Panel, erzeugt einen Schwebeeffekt über dem Inhalt |
| centerTitle | bool? | Zentrierung des Titels (true — Material 3-Verhalten, false — Android-Stil) |
Die Eigenschaft title akzeptiert jedes Widget, am häufigsten wird jedoch Text mit Stilkonfiguration über TextStyle verwendet. Bei langen Titeln wird empfohlen, title in Flexible zu packen, damit der Text bei Platzmangel korrekt abgeschnitten wird. Die Eigenschaft leading wird beim Navigieren zu einem verschachtelten Bildschirm über Navigator.push automatisch durch BackButton ersetzt, wenn sie nicht explizit gesetzt ist.
Die Liste actions enthält Widgets, die am rechten Rand der AppBar ausgerichtet sind. Jedes Element sollte nicht breiter als 48dp sein (Material Design-Standard). Zum Gruppieren von Aktionen verwenden Sie PopupMenuButton — dies verbirgt weniger wichtige Optionen in einem Dropdown-Menü und hält die Material-Empfehlungen zur Schnittstellendichte ein.
AppBar unterstützt eine tiefgehende Anpassung über Farb-, Schatten- und Abstandseigenschaften. Das grundlegende Styling wird aus dem App-Design geerbt, aber jede Eigenschaft kann einzeln überschrieben werden. Sehen wir uns die wichtigsten Konfigurationsszenarien an.
Die Hintergrundfarbe von AppBar wird über backgroundColor festgelegt. Wenn nicht angegeben, wird appBarTheme aus ThemeData verwendet. In Material 3 wird die AppBar-Farbe automatisch aus ColorScheme.primary berechnet, kann aber für einen bestimmten Bildschirm überschrieben werden. Für eine transparente AppBar (häufig in Profilen verwendet) setzen Sie backgroundColor: Colors.transparent mit elevation: 0.
Die Eigenschaft elevation steuert den Schatten unter der AppBar. Der Wert 0 entfernt den Schatten und erzeugt einen „flachen“ Paneeleffekt, der für Material 3 relevant ist. Der Wert 4 ergibt den Standard-Material Design-Schatten. Für eine benutzerdefinierte Schattensteuerung verwenden Sie shadowColor — die Schattenfarbe, die das Panel visuell vom Inhalt trennt.
Um die Textfarbe in der AppBar zu steuern, verwenden Sie foregroundColor. Diese Eigenschaft beeinflusst die Farbe des Titels, der Symbole und des Textes in actions. Beim Ändern von backgroundColor wird automatisch eine kontrastierende foregroundColor ausgewählt, die jedoch für nicht standardmäßige Designs erzwungen werden kann.
SliverAppBar ist eine Erweiterung von AppBar zur Verwendung innerhalb von CustomScrollView, die Scroll-Animationen unterstützt: Einklappen, Parallax-Effekt und Fixieren. Im Gegensatz zu einer standardmäßigen AppBar ist SliverAppBar ein Sliver-Widget und kann seine Größe dynamisch in Abhängigkeit von der Scrollposition ändern.
Die Hauptmodi von SliverAppBar werden durch eine Kombination der Eigenschaften pinned, floating und snap bestimmt. Im pinned-Modus bleibt das Panel immer am oberen Bildschirmrand sichtbar. Im floating-Modus erscheint es beim Zurückscrollen. Die Kombination floating + snap erzeugt ein „klebendes“ Panel-Verhalten, das bei der geringsten Aufwärtsbewegung erscheint und häufig in Nachrichtenfeeds verwendet wird.
Laut Flutter API SliverAppBar (2026) muss für die Verwendung von SliverAppBar eine normale ListView oder Column durch CustomScrollView mit Sliver-Widgets ersetzt werden. Scaffold funktioniert weiterhin korrekt, aber die appBar-Eigenschaft von Scaffold muss null sein — SliverAppBar wird innerhalb von CustomScrollView als erster Sliver platziert.
Sehen wir uns ein AppBar-Beispiel mit Suche, Dropdown-Menü und TabBar an. Dieser Code zeigt eine typische Konfiguration der oberen Leiste in einer Produktionsanwendung mit Flutter.
Scaffold(
appBar: AppBar(
title: const Text('Katalog'),
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('Einstellungen')),
const PopupMenuItem(value: 'about', child: Text('Über die App')),
],
),
],
bottom: const TabBar(
tabs: [
Tab(text: 'All'),
Tab(text: 'New'),
Tab(text: 'Popular'),
],
),
),
body: const TabBarView(
children: [
AllProductsPage(),
NewProductsPage(),
PopularProductsPage(),
],
),
)
Im Beispiel enthält AppBar einen zentrierten Titel, einen Drawer-Öffnen-Button links, ein Suchsymbol und ein Dropdown-Menü rechts. TabBar unten ermöglicht das Umschalten zwischen Produktkategorien. Diese Konfiguration deckt die meisten mobilen Anwendungsszenarien ab: Navigation, Suche, zusätzliche Optionen und Bereichsumschaltung — alles in einer oberen Leiste.
Häufig gestellte Fragen
Die Höhe von AppBar ist fest (56dp) und kann nicht direkt geändert werden. Für eine benutzerdefinierte Höhe verwenden Sie PreferredSize, der ein benutzerdefiniertes Widget mit der gewünschten Höhe umschließt. Alternativ verwenden Sie SliverAppBar mit collapsedHeight für eine flexible Größenverwaltung im eingeklappten Zustand, ohne die Funktionalität des Standard-Panels zu verlieren.
Setzen Sie die Eigenschaft elevation: 0 im AppBar-Konstruktor. Dadurch wird der Schatten entfernt und das Panel optisch flach, was dem Material 3-Stil entspricht. Für vollständige Kontrolle verwenden Sie shadowColor: Colors.transparent, um die Schattenfarbe zu überschreiben, ohne elevation zu ändern, falls Sie die z-Koordinate beibehalten müssen.
AppBar ist ein statisches Panel mit fester Höhe, das in Scaffold.appBar platziert wird. SliverAppBar ist eine dynamische Version, die innerhalb von CustomScrollView verwendet wird und beim Scrollen einklappen, fixieren und animieren kann. SliverAppBar bietet die Eigenschaften collapsedHeight, expandedHeight, pinned und floating für eine flexible Steuerung des Scrollverhaltens.
Fügen Sie einen IconButton mit einem Suchsymbol zur actions-Liste hinzu. Beim Drücken können Sie showSearch mit einem benutzerdefinierten SearchDelegate aufrufen, der den Suchbildschirm mit automatischer Animation öffnet. Alternativ ersetzen Sie den title durch ein TextField und verwandeln die AppBar in eine Inline-Suchleiste, was für Kataloge und Listen praktisch ist.
Standardmäßig ist centerTitle null, und das Verhalten hängt von der Plattform ab: Unter Android wird der Titel linksbündig, unter iOS zentriert ausgerichtet. Setzen Sie centerTitle: true explizit, um die Zentrierung auf beiden Plattformen zu erzwingen. Wenn der Titel aufgrund von leading nicht zentriert ist, überprüfen Sie, ob leading nicht null ist — dessen Vorhandensein verschiebt den Titel nach rechts.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch