AppBar — co to je, nastavení a widgety Flutter

Autor: IT Sectr Publikováno: 2026-07-02 Doba čtení: 9 min

AppBar — je widget horního panelu obrazovky ve Flutter, který implementuje komponentu Material Design s nadpisem, akcemi, navigačním tlačítkem a kartami. Na rozdíl od vlastního panelu na Row nebo Stack, AppBar poskytuje hotovou architekturu se správnou výškou 56dp (48dp ve sbaleném stavu) a automatickým zpracováním SafeArea. Podle Flutter API Reference (2026) AppBar podporuje animaci při posouvání prostřednictvím SliverAppBar a integraci s Material 3 pomocí parametru forceMaterialTransparency. V typické mobilní aplikaci plní AppBar roli navigačního a informačního centra, kombinující nadpis stránky, systémové akce a přepínání mezi sekcemi.

Hlavní body

  • AppBar — widget horního panelu ve Flutter s nadpisem, actions, leading a podporou TabBar a Material 3
  • Title — text nadpisu, centrován nebo zarovnán vlevo v závislosti na platformě
  • Actions — seznam widgetů akcí (IconButton, PopupMenuButton) umístěných vpravo v AppBar
  • Leading — navigační tlačítko vlevo (ikona hamburgeru pro Drawer nebo tlačítko „Zpět“ pro vnořené obrazovky)
  • Bottom — spodní oblast AppBar pro vložení TabBar, PreferredSize nebo vlastních widgetů

Co je AppBar ve Flutter

AppBar — je standardní Material komponenta horního panelu, která se zobrazuje v horní části Scaffold. Obsahuje nadpis obrazovky, navigační tlačítko (obvykle ikona hamburgeru nebo šipka „Zpět“) a akce — ikony otevírající vyhledávání, nastavení nebo jiné funkce. AppBar se automaticky přizpůsobuje platformě: na Androidu se používá standardní Material bottom-shadow, na iOS — plošší design s průhledností.

AppBar implementuje rozhraní PreferredSizeWidget, což znamená, že jeho výška je pevná a známá před sestavením. Ve výchozím nastavení je výška AppBar 56dp na Androidu a 44dp na iOS v na výšku, s ohledem na SafeArea nahoře. Tato vlastnost umožňuje Scaffold předem vypočítat dostupný prostor pro body, čímž se zabrání překomponování během vykreslování.

Podle Flutter Material Library Guide (2026) prošel AppBar několika iteracemi: ve Flutter 1.x to byl jednoduchý kontejner s textem, ve Flutter 2.x získal podporu Material 3 a flexibleSpace a ve Flutter 3.x — integraci se System UI (barva stavového řádku, průhlednost). Moderní AppBar podporuje Dynamic Color z Material You na zařízeních s Android 12+.

Struktura AppBar: vlastnosti a parametry

AppBar poskytuje sadu parametrů, které řídí každou část horního panelu. Pochopení těchto vlastností umožňuje flexibilní nastavení panelu pro jakékoli požadavky na design bez vytváření vlastních řešení.

VlastnostTypPopis
titleWidget?Hlavní nadpis panelu, obvykle Text s názvem obrazovky
leadingWidget?Widget vlevo od nadpisu (tlačítko „Zpět“ nebo ikona menu)
actionsList<Widget>?Seznam widgetů akcí vpravo (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Spodní oblast pro TabBar nebo vlastní widget
flexibleSpaceWidget?Widget pozadí animovaný při posouvání v SliverAppBar
backgroundColorColor?Barva pozadí panelu, která přepisuje barvu motivu
elevationdoubleStín pod panelem, vytvářející efekt nadzvednutí nad obsahem
centerTitlebool?Centrování nadpisu (true — chování Material 3, false — styl Android)

Title a leading: nastavení nadpisu a navigace

Vlastnost title přijímá libovolný widget, ale nejčastěji se používá Text s nastavením stylu pomocí TextStyle. U dlouhých nadpisů se doporučuje zabalit title do Flexible, aby se text správně ořezal při nedostatku místa. Vlastnost leading se automaticky nahrazuje BackButton při přechodu na vnořenou obrazovku pomocí Navigator.push, pokud není nastavena explicitně.

Actions: umístění ikon akcí

Seznam actions obsahuje widgety zarovnané k pravému okraji AppBar. Každý prvek by neměl být širší než 48dp (standard Material Design). Pro seskupení akcí použijte PopupMenuButton — to skryje méně důležité možnosti v rozbalovací nabídce a dodržuje doporučení Material ohledně hustoty rozhraní.

Přizpůsobení AppBar: styly, barvy a chování

AppBar podporuje hluboké přizpůsobení pomocí vlastností barvy, stínu a okrajů. Základní vzhled se dědí z motivu aplikace, ale každou vlastnost lze přepsat jednotlivě. Podívejme se na hlavní scénáře nastavení.

Barva pozadí AppBar se nastavuje pomocí backgroundColor. Pokud není zadána, použije se appBarTheme z ThemeData. V Material 3 se barva AppBar automaticky vypočítává z ColorScheme.primary, ale lze ji přepsat pro konkrétní obrazovku. Pro průhledný AppBar (často používaný v profilech) nastavte backgroundColor: Colors.transparent s elevation: 0.

Vlastnost elevation řídí stín pod AppBar. Hodnota 0 odstraní stín a vytvoří efekt „plochého“ panelu, což je relevantní pro Material 3. Hodnota 4 dává standardní stín Material Design. Pro vlastní správu stínu použijte shadowColor — barvu stínu, která vizuálně odděluje panel od obsahu.

Pro řízení barvy textu v AppBar použijte foregroundColor. Tato vlastnost ovlivňuje barvu nadpisu, ikon a textu v actions. Při změně backgroundColor se automaticky vybere kontrastní foregroundColor, ale lze jej vynutit pro nestandardní designy.

SliverAppBar: animovaná verze AppBar

SliverAppBar — je rozšíření AppBar pro použití uvnitř CustomScrollView, které podporuje animaci při posouvání: sbalování (collapsing), paralaxní efekt a připnutí (pinned). Na rozdíl od standardního AppBar je SliverAppBar widget sliver a může dynamicky měnit velikost v závislosti na pozici posouvání.

Hlavní režimy SliverAppBar jsou určeny kombinací vlastností pinned, floating a snap. V režimu pinned zůstává panel vždy viditelný v horní části obrazovky. V režimu floating se objeví při posouvání zpět. Kombinace floating + snap vytváří chování „lepivého“ panelu, který se objeví při sebemenším posunutí nahoru, často používaného v informačních kanálech.

Podle Flutter API SliverAppBar (2026) je pro použití SliverAppBar nutné nahradit běžný ListView nebo Column CustomScrollView s widgety sliver. Scaffold nadále funguje správně, ale vlastnost appBar Scaffold musí být null — SliverAppBar je umístěn uvnitř CustomScrollView jako první sliver.

Příklad nastavení AppBar v aplikaci

Podívejme se na příklad AppBar s vyhledáváním, rozbalovací nabídkou a TabBar. Tento kód demonstruje typickou konfiguraci horního panelu v produkční Flutter aplikaci.

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

V příkladu AppBar obsahuje centrový nadpis, tlačítko pro otevření Drawer vlevo, ikonu vyhledávání a rozbalovací nabídku vpravo. TabBar v bottom umožňuje přepínání mezi kategoriemi produktů. Tato konfigurace pokrývá většinu scénářů mobilních aplikací: navigace, vyhledávání, další možnosti a přepínání mezi sekcemi — vše v jednom horním panelu.

Často kladené otázky

Jak změnit výšku AppBar ve Flutter?

Výška AppBar je pevná (56dp) a nelze ji přímo změnit. Pro vlastní výšku použijte PreferredSize, do něhož zabalíte vlastní widget požadované výšky. Alternativně použijte SliverAppBar s collapsedHeight pro flexibilní správu velikosti ve sbaleném stavu bez ztráty funkčnosti standardního panelu.

Jak odstranit stín pod AppBar?

Nastavte vlastnost elevation: 0 v konstruktoru AppBar. Tím odstraníte stín a způsobíte, že panel bude vizuálně plochý, což odpovídá stylu Material 3. Pro úplnou kontrolu použijte shadowColor: Colors.transparent k přepsání barvy stínu bez změny elevation, pokud potřebujete zachovat z-ově souřadnici.

Čím se AppBar liší od SliverAppBar?

AppBar — statický panel s pevnou výškou umístěný v Scaffold.appBar. SliverAppBar — dynamická verze používaná uvnitř CustomScrollView, která se může sbalovat, připínat a animovat při posouvání. SliverAppBar poskytuje vlastnosti collapsedHeight, expandedHeight, pinned a floating pro flexibilní řízení chování při posouvání.

Jak přidat vyhledávání do AppBar?

Přidejte IconButton s ikonou vyhledávání do seznamu actions. Při stisknutí můžete zavolat showSearch s vlastním SearchDelegate, který otevře obrazovku vyhledávání s automatickou animací. Alternativně — nahraďte title TextField, čímž se AppBar změní na vyhledávací lištu na místě, což je vhodné pro katalogy a seznamy.

Proč se nadpis necentruje v AppBar?

Ve výchozím nastavení je centerTitle null a chování závisí na platformě: na Androidu je nadpis zarovnán vlevo, na iOS uprostřed. Explicitně nastavte centerTitle: true pro vynucené centrování na obou platformách. Pokud se nadpis necentruje kvůli leading, zkontrolujte, že leading není null — jeho přítomnost posouvá nadpis doprava.

Shrnutí

  • AppBar — standardní horní panel ve Flutter s nadpisem, leading, actions a bottom pro TabBar, automaticky zohledňující SafeArea
  • Title — centrální prvek panelu přijímající libovolný widget s nastavením centrování pomocí centerTitle
  • Actions — seznam widgetů akcí vpravo, každý o šířce až 48dp podle standardu Material Design
  • Leading — navigační tlačítko vlevo, automaticky nahrazené BackButton při přechodu na vnořenou obrazovku
  • SliverAppBar — rozšíření AppBar pro CustomScrollView s podporou sbalování, připínání a paralaxního efektu
  • Material 3 — AppBar podporuje Dynamic Color, průhlednost a NavigationBar prostřednictvím parametru forceMaterialTransparency
  • Přizpůsobení — vlastnosti backgroundColor, elevation, foregroundColor a shadowColor umožňují přesné nastavení vzhledu pro design projektu

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také