AppBar — co to jest, konfiguracja i widżety Flutter

Autor: IT Sectr Opublikowano: 2026-07-02 Czas czytania: 9 min

AppBar — to widżet górnego paska ekranu we Flutter, implementujący komponent Material Design z tytułem, akcjami, przyciskiem nawigacji i zakładkami. W przeciwieństwie do niestandardowego paska na Row lub Stack, AppBar zapewnia gotową architekturę z prawidłową wysokością 56dp (48dp w stanie zwiniętym) i automatycznym przetwarzaniem SafeArea. Według Flutter API Reference (2026), AppBar obsługuje animację podczas przewijania przez SliverAppBar i integrację z Material 3 przez parametr forceMaterialTransparency. W typowej aplikacji mobilnej AppBar pełni rolę nawigacyjnego i informacyjnego centrum, łącząc tytuł strony, akcje systemowe i przełączanie między sekcjami.

Najważniejsze

  • AppBar — widżet górnego paska we Flutter z tytułem, actions, leading i obsługą TabBar oraz Material 3
  • Title — tekst tytułu, wyśrodkowany lub wyrównany do lewej w zależności od platformy
  • Actions — lista widżetów akcji (IconButton, PopupMenuButton), umieszczanych po prawej stronie w AppBar
  • Leading — przycisk nawigacji po lewej (ikona hamburgera dla Drawer lub przycisk „Wstecz” dla zagnieżdżonych ekranów)
  • Bottom — dolny obszar AppBar do osadzania TabBar, PreferredSize lub niestandardowych widżetów

Czym jest AppBar we Flutter

AppBar — to standardowy komponent Material górnego paska, który wyświetla się w górnej części Scaffold. Zawiera tytuł ekranu, przycisk nawigacji (zwykle ikona hamburgera lub strzałka „Wstecz”) oraz akcje — ikony otwierające wyszukiwanie, ustawienia lub inne funkcje. AppBar automatycznie dostosowuje się do platformy: na Androidzie używany jest standardowy Material bottom-shadow, na iOS — bardziej płaski design z przezroczystością.

AppBar implementuje interfejs PreferredSizeWidget, co oznacza, że jego wysokość jest stała i znana przed budowaniem. Domyślnie wysokość AppBar wynosi 56dp na Androidzie i 44dp na iOS w orientacji pionowej, z uwzględnieniem SafeArea u góry. Ta cecha pozwala Scaffold wcześniej obliczyć dostępne miejsce dla body, unikając przebudowy podczas renderowania.

Według Flutter Material Library Guide (2026), AppBar przeszedł kilka iteracji: we Flutter 1.x był prostym kontenerem z tekstem, we Flutter 2.x otrzymał obsługę Material 3 i flexibleSpace, a we Flutter 3.x — integrację z System UI (kolor paska stanu, przezroczystość). Nowoczesny AppBar obsługuje Dynamic Color z Material You na urządzeniach Android 12+.

Struktura AppBar: właściwości i parametry

AppBar udostępnia zestaw parametrów kontrolujących każdą część górnego paska. Zrozumienie tych właściwości pozwala elastycznie dostosowywać pasek do dowolnych wymagań projektowych bez tworzenia niestandardowych rozwiązań.

WłaściwośćTypOpis
titleWidget?Główny tytuł paska, zazwyczaj Text z nazwą ekranu
leadingWidget?Widżet po lewej stronie tytułu (przycisk „Wstecz” lub ikona menu)
actionsList<Widget>?Lista widżetów akcji po prawej (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Dolny obszar dla TabBar lub niestandardowego widżetu
flexibleSpaceWidget?Widżet tła animowany podczas przewijania w SliverAppBar
backgroundColorColor?Kolor tła paska, nadpisujący kolor motywu
elevationdoubleCień pod paskiem, tworzący efekt uniesienia nad treścią
centerTitlebool?Wyśrodkowanie tytułu (true — Material 3 zachowanie, false — styl Android)

Title i leading: konfiguracja tytułu i nawigacji

Właściwość title przyjmuje dowolny widżet, ale najczęściej używany jest Text z konfiguracją stylu przez TextStyle. W przypadku długich tytułów zaleca się owijanie title w Flexible, aby tekst poprawnie się przycinał przy braku miejsca. Właściwość leading automatycznie zastępowana jest przez BackButton przy przejściu na zagnieżdżony ekran przez Navigator.push, jeśli nie jest ustawiona jawnie.

Actions: rozmieszczanie ikon akcji

Lista actions zawiera widżety wyrównane do prawej krawędzi AppBar. Każdy element nie powinien być szerszy niż 48dp (standard Material Design). Do grupowania akcji używaj PopupMenuButton — ukrywa to mniej ważne opcje w menu rozwijanym i spełnia zalecenia Material dotyczące gęstości interfejsu.

Dostosowanie AppBar: style, kolory i zachowanie

AppBar obsługuje głębokie dostosowanie przez właściwości koloru, cienia i odstępów. Podstawowe wygląd dziedziczony jest z motywu aplikacji, ale każdą właściwość można nadpisać indywidualnie. Rozważmy główne scenariusze konfiguracji.

Kolor tła AppBar ustawia się przez backgroundColor. Jeśli nie jest określony, używany jest appBarTheme z ThemeData. W Material 3 kolor AppBar jest automatycznie obliczany z ColorScheme.primary, ale można go nadpisać dla konkretnego ekranu. Dla przezroczystego AppBar (często używanego w profilach) ustaw backgroundColor: Colors.transparent z elevation: 0.

Właściwość elevation zarządza cieniem pod AppBar. Wartość 0 usuwa cień, tworząc efekt „płaskiego” paska, co jest istotne w Material 3. Wartość 4 daje standardowy cień Material Design. Do niestandardowego zarządzania cieniem używaj shadowColor — kolor cienia, który wizualnie oddziela pasek od treści.

Do zarządzania kolorem tekstu w AppBar używaj foregroundColor. Ta właściwość wpływa na kolor tytułu, ikon i tekstu w actions. Przy zmianie backgroundColor automatycznie dobierany jest kontrastowy foregroundColor, ale można go ustawić强制owo dla niestandardowych designów.

SliverAppBar: animowana wersja AppBar

SliverAppBar — to rozszerzenie AppBar do użycia wewnątrz CustomScrollView, które obsługuje animację podczas przewijania: zwijanie (collapsing), efekt paralaksy i przypinanie (pinned). W przeciwieństwie do standardowego AppBar, SliverAppBar jest widżetem sliver i może dynamicznie zmieniać rozmiar w zależności od pozycji przewijania.

Główne tryby SliverAppBar określane są przez kombinację właściwości pinned, floating i snap. W trybie pinned pasek zawsze pozostaje widoczny w górnej części ekranu. W trybie floating pojawia się przy przewijaniu wstecz. Kombinacja floating + snap tworzy zachowanie „lepkiego” paska, który wysuwa się przy najmniejszym przewinięciu w górę, co jest często używane w kanałach wiadomości.

Według Flutter API SliverAppBar (2026), do użycia SliverAppBar należy zastąpić zwykły ListView lub Column na CustomScrollView z widżetami sliver. Scaffold nadal działa poprawnie, ale właściwość appBar Scaffold musi być null — SliverAppBar umieszczany jest wewnątrz CustomScrollView jako pierwszy sliver.

Przykład konfiguracji AppBar w aplikacji

Rozważmy przykład AppBar z wyszukiwarką, menu rozwijanym i TabBar. Ten kod demonstruje typową konfigurację górnego paska w produkcyjnej aplikacji Flutter.

dart
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('Ustawienia')),
          const PopupMenuItem(value: 'about', child: Text('O aplikacji')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

W przykładzie AppBar zawiera wyśrodkowany tytuł, przycisk otwierania Drawer po lewej, ikonę wyszukiwania i menu rozwijane po prawej. TabBar w bottom umożliwia przełączanie między kategoriami produktów. Taka konfiguracja pokrywa większość scenariuszy aplikacji mobilnych: nawigacja, wyszukiwanie, dodatkowe opcje i przełączanie sekcji — wszystko w jednym górnym pasku.

Często zadawane pytania

Jak zmienić wysokość AppBar we Flutter?

Wysokość AppBar jest stała (56dp) i nie można jej zmienić bezpośrednio. Do niestandardowej wysokości użyj PreferredSize, owijając w niego niestandardowy widżet o żądanej wysokości. Alternatywnie użyj SliverAppBar z collapsedHeight do elastycznego zarządzania rozmiarem w stanie zwiniętym bez utraty funkcjonalności standardowego paska.

Jak usunąć cień pod AppBar?

Ustaw właściwość elevation: 0 w konstruktorze AppBar. Usunie to cień i sprawi, że pasek będzie wizualnie płaski, co odpowiada stylistyce Material 3. Dla pełnej kontroli użyj shadowColor: Colors.transparent, aby nadpisać kolor cienia bez zmiany elevation, jeśli trzeba zachować współrzędną z.

Czym różni się AppBar od SliverAppBar?

AppBar — statyczny pasek o stałej wysokości umieszczany w Scaffold.appBar. SliverAppBar — dynamiczna wersja używana wewnątrz CustomScrollView, która może się zwijać, przypinać i animować podczas przewijania. SliverAppBar udostępnia właściwości collapsedHeight, expandedHeight, pinned i floating do elastycznego zarządzania zachowaniem podczas scrollowania.

Jak dodać wyszukiwanie w AppBar?

Dodaj IconButton z ikoną wyszukiwania do listy actions. Po naciśnięciu można wywołać showSearch z niestandardowym SearchDelegate, który otworzy ekran wyszukiwania z automatyczną animacją. Alternatywnie — zastąp title na TextField, zamieniając AppBar w pasek wyszukiwania na miejscu, co jest wygodne w katalogach i listach.

Dlaczego tytuł nie jest wyśrodkowany w AppBar?

Domyślnie centerTitle jest równe null, a zachowanie zależy od platformy: na Androidzie tytuł jest wyrównany do lewej, na iOS — do środka. Jawnie ustaw centerTitle: true do wymuszonego wyśrodkowania na obu platformach. Jeśli tytuł nie jest wyśrodkowany z powodu leading, sprawdź, że leading nie jest null — jego obecność przesuwa tytuł w prawo.

Podsumowanie

  • AppBar — standardowy górny pasek we Flutter z tytułem, leading, actions i bottom dla TabBar, automatycznie uwzględniający SafeArea
  • Title — centralny element paska przyjmujący dowolny widżet z konfiguracją wyśrodkowania przez centerTitle
  • Actions — lista widżetów akcji po prawej, każdy o szerokości do 48dp według standardu Material Design
  • Leading — przycisk nawigacji po lewej, automatycznie zastępowany przez BackButton przy przejściu na zagnieżdżony ekran
  • SliverAppBar — rozszerzenie AppBar dla CustomScrollView z obsługą zwijania, przypinania i efektu paralaksy
  • Material 3 — AppBar obsługuje Dynamic Color, przezroczystość i NavigationBar przez parametr forceMaterialTransparency
  • Dostosowanie — właściwości backgroundColor, elevation, foregroundColor i shadowColor pozwalają precyzyjnie skonfigurować wygląd pod projekt

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również