AppBar — ay isang widget ng itaas na panel ng screen sa Flutter na nagpapatupad ng Material Design component na may pamagat, mga aksyon, navigation button, at mga tab. Hindi tulad ng custom na panel sa Row o Stack, ang AppBar ay nagbibigay ng handa na arkitektura na may tamang taas na 56dp (48dp sa naka-collapse na estado) at awtomatikong pagproseso ng SafeArea. Ayon sa Flutter API Reference (2026), sinusuportahan ng AppBar ang animation sa pag-scroll sa pamamagitan ng SliverAppBar at integrasyon sa Material 3 sa pamamagitan ng parameter na forceMaterialTransparency. Sa isang tipikal na mobile app, ang AppBar ay gumaganap bilang navigation at information hub, pinagsasama ang pamagat ng pahina, mga system action, at paglipat sa pagitan ng mga seksyon.
Mga pangunahing punto
AppBar — ay isang standard Material component ng itaas na panel na ipinapakita sa itaas na bahagi ng Scaffold. Naglalaman ito ng pamagat ng screen, navigation button (karaniwang hamburger icon o “Bumalik” na arrow) at mga aksyon — mga icon na nagbubukas ng paghahanap, mga setting, o iba pang function. Ang AppBar ay awtomatikong umaangkop sa platform: sa Android ginagamit ang standard Material bottom-shadow, sa iOS — mas flat na disenyo na may transparency.
Ang AppBar ay nagpapatupad ng PreferredSizeWidget interface, na nangangahulugang ang taas nito ay fixed at alam bago ang pagbuo. Bilang default, ang taas ng AppBar ay 56dp sa Android at 44dp sa iOS sa portrait orientation, na isinasaalang-alang ang SafeArea sa itaas. Ang tampok na ito ay nagpapahintulot sa Scaffold na kalkulahin nang maaga ang available na espasyo para sa body, iniiwasan ang recomposition sa pag-render.
Ayon sa Flutter Material Library Guide (2026), ang AppBar ay dumaan sa ilang mga iteration: sa Flutter 1.x ito ay isang simpleng container na may text, sa Flutter 2.x nakatanggap ito ng suporta para sa Material 3 at flexibleSpace, at sa Flutter 3.x — integrasyon sa System UI (kulay ng status bar, transparency). Ang modernong AppBar ay sumusuporta sa Dynamic Color mula sa Material You sa mga Android 12+ device.
AppBar ay nagbibigay ng isang set ng mga parameter na kumokontrol sa bawat bahagi ng itaas na panel. Ang pag-unawa sa mga property na ito ay nagbibigay-daan sa flexible na pag-configure ng panel para sa anumang disenyo nang hindi gumagawa ng custom solutions.
| Property | Uri | Paglalarawan |
|---|---|---|
| title | Widget? | Pangunahing pamagat ng panel, karaniwang Text na may pangalan ng screen |
| leading | Widget? | Widget sa kaliwa ng pamagat (“Bumalik” na button o menu icon) |
| actions | List<Widget>? | Listahan ng action widgets sa kanan (IconButton, PopupMenuButton) |
| bottom | PreferredSizeWidget? | Ibabang lugar para sa TabBar o custom widget |
| flexibleSpace | Widget? | Background widget na nai-animate sa pag-scroll sa SliverAppBar |
| backgroundColor | Color? | Kulay ng background ng panel, na nag-o-override sa kulay ng tema |
| elevation | double | Anino sa ilalim ng panel, na lumilikha ng epekto ng pag-angat sa itaas ng nilalaman |
| centerTitle | bool? | Pag-center ng pamagat (true — Material 3 behavior, false — Android style) |
Ang property na title ay tumatanggap ng anumang widget, ngunit ang pinaka-ginagamit ay Text na may style configuration sa pamamagitan ng TextStyle. Para sa mahabang pamagat, inirerekomenda na balutin ang title sa Flexible upang ang text ay ma-trim nang tama kapag kulang ang espasyo. Ang property na leading ay awtomatikong pinapalitan ng BackButton sa paglipat sa nested screen sa pamamagitan ng Navigator.push, kung hindi explicitly na naka-set.
Ang listahan ng actions ay naglalaman ng mga widget na naka-align sa kanang gilid ng AppBar. Ang bawat elemento ay hindi dapat mas malapad sa 48dp (standard Material Design). Para sa pag-grupo ng mga aksyon, gamitin ang PopupMenuButton — ito ay nagtatago ng hindi gaanong importanteng opsyon sa dropdown menu at sumusunod sa Material na rekomendasyon para sa density ng interface.
AppBar ay sumusuporta sa malalim na pag-customize sa pamamagitan ng mga property ng kulay, anino, at margin. Ang pangunahing hitsura ay minana mula sa tema ng app, ngunit ang bawat property ay maaaring i-override nang isa-isa. Tingnan natin ang mga pangunahing scenario ng pag-configure.
Ang kulay ng background ng AppBar ay naka-set sa pamamagitan ng backgroundColor. Kung hindi tinukoy, ginagamit ang appBarTheme mula sa ThemeData. Sa Material 3, ang kulay ng AppBar ay awtomatikong kinakalkula mula sa ColorScheme.primary, ngunit maaaring i-override para sa isang partikular na screen. Para sa transparent na AppBar (madalas gamitin sa profiles), i-set ang backgroundColor: Colors.transparent na may elevation: 0.
Ang property na elevation ay kumokontrol sa anino sa ilalim ng AppBar. Ang value na 0 ay nag-aalis ng anino, na lumilikha ng “flat” panel effect, na may kaugnayan sa Material 3. Ang value na 4 ay nagbibigay ng standard Material Design shadow. Para sa custom na kontrol ng anino, gamitin ang shadowColor — ang kulay ng anino na biswal na naghihiwalay ng panel mula sa nilalaman.
Para sa pagkontrol ng kulay ng text sa AppBar, gamitin ang foregroundColor. Ang property na ito ay nakakaapekto sa kulay ng pamagat, mga icon, at text sa actions. Sa pagbabago ng backgroundColor, awtomatikong pipili ng contrast na foregroundColor, ngunit maaaring i-set nang sapilitan para sa hindi standard na mga disenyo.
SliverAppBar — ay extension ng AppBar para sa paggamit sa loob ng CustomScrollView, na sumusuporta sa animation sa pag-scroll: pag-collapse (collapsing), parallax effect, at pag-pin (pinned). Hindi tulad ng standard AppBar, ang SliverAppBar ay isang sliver widget at maaaring dynamic na magbago ng laki depende sa scroll position.
Ang mga pangunahing mode ng SliverAppBar ay tinutukoy ng kumbinasyon ng mga property na pinned, floating, at snap. Sa pinned mode, ang panel ay laging nakikita sa itaas na bahagi ng screen. Sa floating mode, lumilitaw ito sa pag-scroll pabalik. Ang kumbinasyon ng floating + snap ay lumilikha ng “malagkit” na panel behavior na lumalabas sa pinakamaliit na pag-scroll pataas, na kadalasang ginagamit sa mga news feed.
Ayon sa Flutter API SliverAppBar (2026), para gamitin ang SliverAppBar, kailangan mong palitan ang regular na ListView o Column ng CustomScrollView na may sliver widgets. Ang Scaffold ay patuloy na gumagana nang tama, ngunit ang appBar property ng Scaffold ay dapat null — ang SliverAppBar ay inilalagay sa loob ng CustomScrollView bilang unang sliver.
Tingnan natin ang halimbawa ng AppBar na may paghahanap, dropdown menu, at TabBar. Ang code na ito ay nagpapakita ng tipikal na configuration ng itaas na panel sa isang production Flutter app.
Scaffold(
appBar: AppBar(
title: const Text('Katalogo'),
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('Mga Setting')),
const PopupMenuItem(value: 'about', child: Text('Tungkol sa App')),
],
),
],
bottom: const TabBar(
tabs: [
Tab(text: 'All'),
Tab(text: 'New'),
Tab(text: 'Popular'),
],
),
),
body: const TabBarView(
children: [
AllProductsPage(),
NewProductsPage(),
PopularProductsPage(),
],
),
)
Sa halimbawa, ang AppBar ay naglalaman ng naka-center na pamagat, button para buksan ang Drawer sa kaliwa, icon ng paghahanap, at dropdown menu sa kanan. Ang TabBar sa bottom ay nagbibigay-daan sa paglipat sa pagitan ng mga kategorya ng produkto. Ang configuration na ito ay sumasaklaw sa karamihan ng mga scenario ng mobile apps: navigation, paghahanap, karagdagang opsyon, at paglipat sa pagitan ng mga seksyon — lahat sa isang itaas na panel.
Mga madalas itanong
Ang taas ng AppBar ay fixed (56dp) at hindi direktang mababago. Para sa custom na taas, gamitin ang PreferredSize, balutin ang custom widget ng nais na taas dito. Bilang alternatibo, gamitin ang SliverAppBar na may collapsedHeight para sa flexible na pamamahala ng laki sa naka-collapse na estado nang hindi nawawala ang functionality ng standard panel.
I-set ang property na elevation: 0 sa constructor ng AppBar. Ito ay mag-aalis ng anino at gagawing biswal na flat ang panel, na naaayon sa istilo ng Material 3. Para sa buong kontrol, gamitin ang shadowColor: Colors.transparent para i-override ang kulay ng anino nang hindi binabago ang elevation, kung kailangan mong panatilihin ang z-coordinate.
AppBar — static panel na may fixed na taas na inilalagay sa Scaffold.appBar. SliverAppBar — dynamic na bersyon na ginagamit sa loob ng CustomScrollView, na maaaring mag-collapse, mag-pin, at mag-animate sa pag-scroll. Ang SliverAppBar ay nagbibigay ng mga property na collapsedHeight, expandedHeight, pinned, at floating para sa flexible na pamamahala ng pag-uugali sa pag-scroll.
Magdagdag ng IconButton na may icon ng paghahanap sa listahan ng actions. Kapag pinindot, maaari mong tawagan ang showSearch na may custom na SearchDelegate na magbubukas ng screen ng paghahanap na may automatic animation. Bilang alternatibo — palitan ang title ng TextField, ginagawang search bar sa lugar ang AppBar, na maginhawa para sa mga catalog at listahan.
Bilang default, ang centerTitle ay null at ang pag-uugali ay depende sa platform: sa Android ang pamagat ay naka-left align, sa iOS — naka-center. I-set nang explicitly ang centerTitle: true para sa sapilitang pag-center sa parehong platform. Kung ang pamagat ay hindi naka-center dahil sa leading, suriin na ang leading ay hindi null — ang presensya nito ay naglilipat ng pamagat sa kanan.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din