AppBar — ano ito, pag-configure at mga widget ng Flutter

May-akda: IT Sectr Nai-publish: 2026-07-02 Oras ng pagbabasa: 9 min

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 — widget ng itaas na panel sa Flutter na may pamagat, actions, leading at suporta para sa TabBar at Material 3
  • Title — teksto ng pamagat, naka-center o naka-left align depende sa platform
  • Actions — listahan ng action widgets (IconButton, PopupMenuButton) na nakalagay sa kanan sa AppBar
  • Leading — navigation button sa kaliwa (hamburger icon para sa Drawer o “Bumalik” na button para sa nested screens)
  • Bottom — ibabang lugar ng AppBar para sa pag-embed ng TabBar, PreferredSize o custom widgets

Ano ang AppBar sa Flutter

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.

Istraktura ng AppBar: mga property at parameter

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.

PropertyUriPaglalarawan
titleWidget?Pangunahing pamagat ng panel, karaniwang Text na may pangalan ng screen
leadingWidget?Widget sa kaliwa ng pamagat (“Bumalik” na button o menu icon)
actionsList<Widget>?Listahan ng action widgets sa kanan (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Ibabang lugar para sa TabBar o custom widget
flexibleSpaceWidget?Background widget na nai-animate sa pag-scroll sa SliverAppBar
backgroundColorColor?Kulay ng background ng panel, na nag-o-override sa kulay ng tema
elevationdoubleAnino sa ilalim ng panel, na lumilikha ng epekto ng pag-angat sa itaas ng nilalaman
centerTitlebool?Pag-center ng pamagat (true — Material 3 behavior, false — Android style)

Title at leading: pag-configure ng pamagat at navigation

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.

Actions: paglalagay ng action icons

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.

Pag-customize ng AppBar: mga estilo, kulay at pag-uugali

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: animated na bersyon ng AppBar

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.

Halimbawa ng pag-configure ng AppBar sa app

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.

dart
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

Paano baguhin ang taas ng AppBar sa Flutter?

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.

Paano alisin ang anino sa ilalim ng AppBar?

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.

Ano ang pagkakaiba ng AppBar sa SliverAppBar?

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.

Paano magdagdag ng paghahanap sa AppBar?

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.

Bakit hindi naka-center ang pamagat sa AppBar?

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

  • AppBar — standard na itaas na panel sa Flutter na may pamagat, leading, actions, at bottom para sa TabBar, awtomatikong isinasaalang-alang ang SafeArea
  • Title — sentral na elemento ng panel na tumatanggap ng anumang widget na may configuration ng pag-center sa pamamagitan ng centerTitle
  • Actions — listahan ng action widgets sa kanan, bawat isa hanggang 48dp ang lapad ayon sa standard Material Design
  • Leading — navigation button sa kaliwa, awtomatikong pinapalitan ng BackButton sa paglipat sa nested screen
  • SliverAppBar — extension ng AppBar para sa CustomScrollView na may suporta para sa pag-collapse, pag-pin, at parallax effect
  • Material 3 — AppBar ay sumusuporta sa Dynamic Color, transparency, at NavigationBar sa pamamagitan ng parameter na forceMaterialTransparency
  • Pag-customize — mga property na backgroundColor, elevation, foregroundColor, at shadowColor ay nagbibigay-daan sa tumpak na pagsasaayos ng hitsura para sa disenyo ng proyekto

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.

Pag-usapan ang proyekto

Basahin din