AppBar — ce este, configurare și widget-uri Flutter

Autor: IT Sectr Publicat: 2026-07-02 Timp de citire: 9 min

AppBar — este un widget al panoului superior al ecranului în Flutter, care implementează componenta Material Design cu titlu, acțiuni, buton de navigare și file. Spre deosebire de un panou personalizat pe Row sau Stack, AppBar oferă o arhitectură gata făcută cu înălțimea corectă de 56dp (48dp în stare restrânsă) și procesarea automată a SafeArea. Conform Flutter API Reference (2026), AppBar suportă animație la derulare prin SliverAppBar și integrare cu Material 3 prin parametrul forceMaterialTransparency. Într-o aplicație mobilă tipică, AppBar îndeplinește rolul unui hub de navigare și informațional, combinând titlul paginii, acțiunile sistemului și comutarea între secțiuni.

Puncte principale

  • AppBar — widget al panoului superior în Flutter cu titlu, actions, leading și suport pentru TabBar și Material 3
  • Title — textul titlului, centrat sau aliniat la stânga în funcție de platformă
  • Actions — lista widget-urilor de acțiuni (IconButton, PopupMenuButton) plasate în dreapta în AppBar
  • Leading — butonul de navigare din stânga (iconița „hamburger“ pentru Drawer sau butonul „Înapoi“ pentru ecrane imbricate)
  • Bottom — zona inferioară a AppBar pentru încorporarea TabBar, PreferredSize sau widget-uri personalizate

Ce este AppBar în Flutter

AppBar — este o componentă Material standard a panoului superior care se afișează în partea de sus a Scaffold. Conține titlul ecranului, butonul de navigare (de obicei iconița „hamburger“ sau săgeata „Înapoi“) și acțiuni — iconițe care deschid căutarea, setările sau alte funcții. AppBar se adaptează automat la platformă: pe Android se folosește Material bottom-shadow standard, pe iOS — un design mai plat cu transparență.

AppBar implementează interfața PreferredSizeWidget, ceea ce înseamnă că înălțimea sa este fixă și cunoscută înainte de construire. În mod implicit, înălțimea AppBar este de 56dp pe Android și 44dp pe iOS în orientare portret, ținând cont de SafeArea deasupra. Această caracteristică permite Scaffold să calculeze în avans spațiul disponibil pentru body, evitând recompunerea în timpul redării.

Conform Flutter Material Library Guide (2026), AppBar a trecut prin mai multe iterații: în Flutter 1.x era un container simplu cu text, în Flutter 2.x a primit suport pentru Material 3 și flexibleSpace, iar în Flutter 3.x — integrare cu System UI (culoarea barei de stare, transparență). AppBar modern suportă Dynamic Color de la Material You pe dispozitive Android 12+.

Structura AppBar: proprietăți și parametri

AppBar oferă un set de parametri care controlează fiecare parte a panoului superior. Înțelegerea acestor proprietăți permite configurarea flexibilă a panoului pentru orice cerințe de design fără a crea soluții personalizate.

ProprietateTipDescriere
titleWidget?Titlul principal al panoului, de obicei Text cu numele ecranului
leadingWidget?Widgetul din stânga titlului (butonul „Înapoi“ sau iconița de meniu)
actionsList<Widget>?Lista widget-urilor de acțiuni din dreapta (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Zona inferioară pentru TabBar sau widget personalizat
flexibleSpaceWidget?Widgetul de fundal animat la derulare în SliverAppBar
backgroundColorColor?Culoarea de fundal a panoului, care suprascrie culoarea temei
elevationdoubleUmbra sub panou, care creează un efect de ridicare deasupra conținutului
centerTitlebool?Centrarea titlului (true — comportament Material 3, false — stil Android)

Title și leading: configurarea titlului și navigării

Proprietatea title acceptă orice widget, dar cel mai des se folosește Text cu configurarea stilului prin TextStyle. Pentru titluri lungi, se recomandă înfășurarea title în Flexible pentru ca textul să se taie corect la lipsa de spațiu. Proprietatea leading este înlocuită automat cu BackButton la trecerea pe un ecran imbricat prin Navigator.push, dacă nu este setată explicit.

Actions: amplasarea iconițelor de acțiuni

Lista actions conține widget-uri aliniate la marginea dreaptă a AppBar. Fiecare element nu trebuie să fie mai lat de 48dp (standard Material Design). Pentru gruparea acțiunilor, folosiți PopupMenuButton — acesta ascunde opțiunile mai puțin importante într-un meniu derulant și respectă recomandările Material privind densitatea interfeței.

Personalizarea AppBar: stiluri, culori și comportament

AppBar suportă personalizare profundă prin proprietățile de culoare, umbră și margini. Aspectul de bază este moștenit din tema aplicației, dar fiecare proprietate poate fi suprascrisă individual. Să analizăm principalele scenarii de configurare.

Culoarea de fundal a AppBar se setează prin backgroundColor. Dacă nu este specificată, se folosește appBarTheme din ThemeData. În Material 3, culoarea AppBar se calculează automat din ColorScheme.primary, dar poate fi suprascrisă pentru un anumit ecran. Pentru un AppBar transparent (des folosit în profiluri), setați backgroundColor: Colors.transparent cu elevation: 0.

Proprietatea elevation controlează umbra sub AppBar. Valoarea 0 elimină umbra, creând un efect de panou „plat“, ceea ce este relevant pentru Material 3. Valoarea 4 oferă umbra standard Material Design. Pentru control personalizat al umbrei, folosiți shadowColor — culoarea umbrei care separă vizual panoul de conținut.

Pentru controlul culorii textului în AppBar, folosiți foregroundColor. Această proprietate afectează culoarea titlului, iconițelor și textului în actions. La schimbarea backgroundColor, se selectează automat un foregroundColor contrastant, dar poate fi setat forțat pentru designuri non-standard.

SliverAppBar: versiunea animată a AppBar

SliverAppBar — este o extensie a AppBar pentru utilizare în CustomScrollView, care suportă animație la derulare: restrângere (collapsing), efect de paralaxă și fixare (pinned). Spre deosebire de AppBar standard, SliverAppBar este un widget sliver și poate schimba dimensiunea dinamic în funcție de poziția de derulare.

Modurile principale ale SliverAppBar sunt determinate de combinația proprietăților pinned, floating și snap. În modul pinned, panoul rămâne întotdeauna vizibil în partea de sus a ecranului. În modul floating, apare la derularea înapoi. Combinația floating + snap creează un comportament de panou „lipicios“ care apare la cea mai mică derulare în sus, des folosit în feed-uri de știri.

Conform Flutter API SliverAppBar (2026), pentru a folosi SliverAppBar, trebuie să înlocuiți ListView sau Column obișnuit cu CustomScrollView cu widget-uri sliver. Scaffold continuă să funcționeze corect, dar proprietatea appBar a Scaffold trebuie să fie null — SliverAppBar se plasează în CustomScrollView ca primul sliver.

Exemplu de configurare a AppBar în aplicație

Să analizăm un exemplu de AppBar cu căutare, meniu derulant și TabBar. Acest cod demonstrează o configurație tipică a panoului superior într-o aplicație Flutter de producție.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Catalog'),
    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('Setări')),
          const PopupMenuItem(value: 'about', child: Text('Despre aplicație')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

În exemplu, AppBar conține un titlu centrat, un buton de deschidere a Drawer în stânga, o iconiță de căutare și un meniu derulant în dreapta. TabBar în bottom permite comutarea între categoriile de produse. Această configurație acoperă majoritatea scenariilor aplicațiilor mobile: navigare, căutare, opțiuni suplimentare și comutare între secțiuni — totul într-un singur panou superior.

Întrebări frecvente

Cum se modifică înălțimea AppBar în Flutter?

Înălțimea AppBar este fixă (56dp) și nu poate fi modificată direct. Pentru înălțime personalizată, folosiți PreferredSize, înfășurând un widget personalizat cu înălțimea dorită. Alternativ, folosiți SliverAppBar cu collapsedHeight pentru gestionarea flexibilă a dimensiunii în stare restrânsă fără a pierde funcționalitatea panoului standard.

Cum se elimină umbra de sub AppBar?

Setați proprietatea elevation: 0 în constructorul AppBar. Aceasta va elimina umbra și va face panoul vizual plat, ceea ce corespunde stilisticii Material 3. Pentru control complet, folosiți shadowColor: Colors.transparent pentru a suprascrie culoarea umbrei fără a modifica elevation, dacă trebuie să păstrați coordonata z.

Cu ce se deosebește AppBar de SliverAppBar?

AppBar — un panou static cu înălțime fixă plasat în Scaffold.appBar. SliverAppBar — o versiune dinamică folosită în CustomScrollView, care se poate restrânge, fixa și anima la derulare. SliverAppBar oferă proprietățile collapsedHeight, expandedHeight, pinned și floating pentru gestionarea flexibilă a comportamentului la scroll.

Cum se adaugă căutarea în AppBar?

Adăugați un IconButton cu iconița de căutare în lista actions. La apăsare, puteți apela showSearch cu un SearchDelegate personalizat, care va deschide ecranul de căutare cu animație automată. Alternativ — înlocuiți title cu un TextField, transformând AppBar într-o bară de căutare pe loc, convenabilă pentru cataloage și liste.

De ce titlul nu se centrează în AppBar?

În mod implicit, centerTitle este null, iar comportamentul depinde de platformă: pe Android titlul este aliniat la stânga, pe iOS — la centru. Setați explicit centerTitle: true pentru centrare forțată pe ambele platforme. Dacă titlul nu se centrează din cauza leading, verificați că leading nu este null — prezența sa deplasează titlul la dreapta.

Rezumat

  • AppBar — panoul superior standard în Flutter cu titlu, leading, actions și bottom pentru TabBar, care ia în calcul automat SafeArea
  • Title — elementul central al panoului care acceptă orice widget cu configurarea centrării prin centerTitle
  • Actions — lista widget-urilor de acțiuni din dreapta, fiecare cu lățimea de până la 48dp conform standardului Material Design
  • Leading — butonul de navigare din stânga, înlocuit automat cu BackButton la trecerea pe un ecran imbricat
  • SliverAppBar — extensia AppBar pentru CustomScrollView cu suport pentru restrângere, fixare și efect de paralaxă
  • Material 3 — AppBar suportă Dynamic Color, transparență și NavigationBar prin parametrul forceMaterialTransparency
  • Personalizare — proprietățile backgroundColor, elevation, foregroundColor și shadowColor permit ajustarea precisă a aspectului pentru designul proiectului

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și