AppBar — mi ez, beállítás és Flutter widgetek

Szerző: IT Sectr Megjelenés: 2026-07-02 Olvasási idő: 9 perc

AppBar — egy widget a képernyő felső paneljéhez a Flutterben, amely megvalósítja a Material Design komponenst címmel, műveletekkel, navigációs gombbal és lapokkal. Ellentétben a Row vagy Stack alapú egyedi panellel, az AppBar kész architektúrát nyújt a helyes 56dp magassággal (48dp összecsukott állapotban) és a SafeArea automatikus kezelésével. A Flutter API Reference (2026) szerint az AppBar támogatja az animációt görgetéskor a SliverAppBar-on keresztül és az integrációt a Material 3-mal a forceMaterialTransparency paraméteren keresztül. Egy tipikus mobilalkalmazásban az AppBar navigációs és információs központként működik, ötvözve az oldal címét, a rendszerműveleteket és a szekciók váltását.

Főbb pontok

  • AppBar — felső panel widget a Flutterben címmel, actions, leading és TabBar és Material 3 támogatással
  • Title — a címszöveg, középre vagy balra igazítva a platformtól függően
  • Actions — műveleti widgetek listája (IconButton, PopupMenuButton) az AppBar jobb oldalán
  • Leading — navigációs gomb bal oldalt (hamburger ikon a Drawer-hez vagy „Vissza” gomb beágyazott képernyőkhöz)
  • Bottom — az AppBar alsó része TabBar, PreferredSize vagy egyedi widgetek beágyazásához

Mi az AppBar a Flutterben

AppBar — egy szabványos Material felső panel komponens, amely a Scaffold felső részén jelenik meg. Tartalmazza a képernyő címét, a navigációs gombot (általában hamburger ikon vagy „Vissza” nyíl) és a műveleteket — ikonokat, amelyek megnyitják a keresést, beállításokat vagy más funkciókat. Az AppBar automatikusan alkalmazkodik a platformhoz: Androidon a szabványos Material bottom-shadow használatos, iOS-en — laposabb kialakítás átlátszósággal.

Az AppBar megvalósítja a PreferredSizeWidget interfészt, ami azt jelenti, hogy a magassága rögzített és ismert az építés előtt. Alapértelmezésben az AppBar magassága 56dp Androidon és 44dp iOS-en portré tájolásban, figyelembe véve a SafeArea-t felől. Ez a tulajdonság lehetővé teszi a Scaffold számára, hogy előre kiszámítsa a rendelkezésre álló helyet a body számára, elkerülve az újrakomponálást a renderelés során.

A Flutter Material Library Guide (2026) szerint az AppBar több iteráción ment keresztül: a Flutter 1.x-ben egyszerű konténer volt szöveggel, a Flutter 2.x-ben megkapta a Material 3 és flexibleSpace támogatást, a Flutter 3.x-ben pedig az integrációt a System UI-val (állapotsor színe, átlátszóság). A modern AppBar támogatja a Dynamic Color-t a Material You-ból Android 12+ eszközökön.

Az AppBar felépítése: tulajdonságok és paraméterek

AppBar egy sor paramétert kínál, amelyek a felső panel minden részét vezérlik. Ezen tulajdonságok megértése lehetővé teszi a panel rugalmas beállítását bármilyen dizájnkövetelményhez anélkül, hogy egyedi megoldásokat kellene létrehozni.

TulajdonságTípusLeírás
titleWidget?A panel fő címe, általában Text a képernyő nevevel
leadingWidget?Widget a címtől balra („Vissza” gomb vagy menü ikon)
actionsList<Widget>?Műveleti widgetek listája jobb oldalt (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Alsó rész TabBar vagy egyedi widget számára
flexibleSpaceWidget?Háttér widget, amely animálódik görgetéskor a SliverAppBar-ban
backgroundColorColor?A panel háttérszíne, felülírja a téma színét
elevationdoubleÁrnyék a panel alatt, amely kiemelő hatást kelt a tartalom felett
centerTitlebool?A cím középre igazítása (true — Material 3 viselkedés, false — Android stílus)

Title és leading: a cím és navigáció beállítása

A title tulajdonság bármilyen widgetet elfogad, de leggyakrabban a Text használatos a stílus TextStyle-en keresztül történő beállításával. Hosszú címek esetén ajánlott a title becsomagolása Flexible-be, hogy a szöveg megfelelően levágódjön helyhiány esetén. A leading tulajdonság automatikusan BackButton-ra cserélődik beágyazott képernyőre való áttéréskor a Navigator.push-on keresztül, ha nincs explicit módon beállítva.

Actions: műveleti ikonok elhelyezése

Az actions lista az AppBar jobb széléhez igazított widgeteket tartalmaz. Minden elem nem lehet szélesebb 48dp-nél (Material Design szabvány). A műveletek csoportosításához használja a PopupMenuButton-t — ez elrejti a kevésbé fontos opciókat egy legördülő menüben, és betartja a Material ajánlásokat a felület sűrűségére vonatkozóan.

Az AppBar testreszabása: stílusok, színek és viselkedés

AppBar támogatja a mély testreszabást a szín, árnyék és margó tulajdonságokon keresztül. Az alap megjelenés az alkalmazás témájából öröklődik, de minden tulajdonság egyedül felülírható. Tekintsük át a fő beállítási forgatókönyveket.

Az AppBar háttérszíne a backgroundColor-en keresztül állítható be. Ha nincs megadva, a ThemeData-ból származó appBarTheme használatos. A Material 3-ban az AppBar színe automatikusan a ColorScheme.primary-ból számítódik ki, de felülírható egy adott képernyőhöz. Átlátszó AppBar (gyakran használatos profilokban) esetén állítsa be a backgroundColor: Colors.transparent értéket elevation: 0 paraméterrel.

Az elevation tulajdonság vezérli az AppBar alatti árnyékot. A 0 érték eltávolítja az árnyékot, „lapos” panel hatást keltve, ami releváns a Material 3 számára. A 4 érték a szabványos Material Design árnyékot adja. Az árnyék egyedi vezérléséhez használja a shadowColor-t — az árnyék színét, amely vizuálisan elválasztja a panelt a tartalomtól.

Az AppBar szöveg színének vezérléséhez használja a foregroundColor-t. Ez a tulajdonság befolyásolja a cím, az ikonok és az actions szövegének színét. A backgroundColor megváltoztatásakor automatikusan kontrasztos foregroundColor kerül kiválasztásra, de nem szabványos dizájnok esetén kényszeríthető.

SliverAppBar: az AppBar animált változata

SliverAppBar — az AppBar kiterjesztése a CustomScrollView-on belüli használathoz, amely támogatja az animációt görgetéskor: összecsukás (collapsing), parallaxis hatás és rögzítés (pinned). A szabványos AppBar-tól eltérően a SliverAppBar egy sliver widget, és dinamikusan változtathatja a méretét a görgetés pozíciójától függően.

A SliverAppBar fő módjait a pinned, floating és snap tulajdonságok kombinációja határozza meg. Pinned módban a panel mindig látható marad a képernyő tetején. Floating módban visszagörgetéskor jelenik meg. A floating + snap kombináció „ragadós” panel viselkedést hoz létre, amely a legkisebb felfelé görgetésnél előbukkan, gyakran használatos hírfolyamokban.

A Flutter API SliverAppBar (2026) szerint a SliverAppBar használatához a szokásos ListView vagy Column helyére CustomScrollView-t kell használni sliver widgetekkel. A Scaffold továbbra is helyesen működik, de a Scaffold appBar tulajdonságának null-nak kell lennie — a SliverAppBar a CustomScrollView-on belülre kerül az első sliverként.

Példa az AppBar beállítására az alkalmazásban

Tekintsünk egy AppBar példát kereséssel, legördülő menücel és TabBar-ral. Ez a kód egy tipikus felső panel konfigurációt mutat be egy éles Flutter alkalmazásban.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Katalógus'),
    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('Beállítások')),
          const PopupMenuItem(value: 'about', child: Text('Az alkalmazásról')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

A példában az AppBar egy középre igazított címet, bal oldalt egy Drawer nyitó gombot, jobb oldalt egy kereső ikont és egy legördülő menüt tartalmaz. A TabBar a bottom-ban lehetővé teszi a termékkategóriák közötti váltogatást. Ez a konfiguráció a mobilalkalmazások legtöbb forgatókönyvét lefedi: navigáció, keresés, további opciók és szekciók váltása — minden egy felső panelben.

Gyakran ismételt kérdések

Hogyan lehet megváltoztatni az AppBar magasságát a Flutterben?

Az AppBar magassága rögzített (56dp), és nem változtatható meg közvetlenül. Egyedi magassághoz használja a PreferredSize-t, becsomagolva egy egyedi widgetet a kívánt magassággal. Alternatívként használja a SliverAppBar-t collapsedHeight paraméterrel a méret rugalmas kezeléséhez összecsukott állapotban anélkül, hogy elveszítené a szabványos panel funkcionalitását.

Hogyan lehet eltávolítani az árnyékot az AppBar alatt?

Állítsa be az elevation: 0 tulajdonságot az AppBar konstruktorában. Ez eltávolítja az árnyékot és vizuálisan lapossá teszi a panelt, ami megfelel a Material 3 stílusának. Teljes ellenőrzéshez használja a shadowColor: Colors.transparent értéket az árnyék színének felülírásához az elevation módosítása nélkül, ha meg kell őriznie a z-koordinátát.

Miben különbözik az AppBar a SliverAppBar-tól?

AppBar — egy statikus panel rögzített magassággal, a Scaffold.appBar-ban elhelyezve. SliverAppBar — egy dinamikus változat, amelyet a CustomScrollView-on belül használnak, és görgetéskor összecsukható, rögzíthető és animálható. A SliverAppBar a collapsedHeight, expandedHeight, pinned és floating tulajdonságokat kínálja a görgetési viselkedés rugalmas kezeléséhez.

Hogyan lehet keresést hozzáadni az AppBar-hoz?

Adjon hozzá egy IconButton-t kereső ikonnal az actions listához. Megnyomáskor meghívhatja a showSearch-t egy egyedi SearchDelegate-del, amely automatikus animációval nyitja meg a kereső képernyőt. Alternatívaként — cserélje ki a title-t TextField-ra, átalakítva az AppBar-t helyben keresřsává, ami kényelmes katalógusok és listák esetén.

Miért nem középre igazított a cím az AppBar-ban?

Alapértelmezésben a centerTitle null, és a viselkedés a platformtól függ: Androidon a cím balra igazított, iOS-en középre. Explicit módon állítsa be a centerTitle: true értéket a kényszerített középre igazításhoz mindkét platformon. Ha a cím a leading miatt nem középre igazított, ellenőrizze, hogy a leading nem null — a jelenléte jobbra tolja a címet.

Összefoglalás

  • AppBar — szabványos felső panel a Flutterben címmel, leading, actions és bottom résszel a TabBar számára, automatikusan figyelembe véve a SafeArea-t
  • Title — a panel központi eleme, amely bármilyen widgetet elfogad a centerTitle-en keresztüli középre igazítási beállítással
  • Actions — műveleti widgetek listája jobb oldalt, mindegyik legfeljebb 48dp széles a Material Design szabvány szerint
  • Leading — navigációs gomb bal oldalt, automatikusan BackButton-ra cserélődik beágyazott képernyőre váltáskor
  • SliverAppBar — az AppBar kiterjesztése CustomScrollView-hoz összecsukás, rögzítés és parallaxis hatás támogatásával
  • Material 3 — az AppBar támogatja a Dynamic Color-t, átlátszóságot és NavigationBar-t a forceMaterialTransparency paraméteren keresztül
  • Testreszabás — a backgroundColor, elevation, foregroundColor és shadowColor tulajdonságok lehetővé teszik a megjelenés pontos beállítását a projekt dizájnjához

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is