AppBar — шта је то, подешавање и Flutter виџети

Аутор: IT Sectr Објављено: 2026-07-02 Време читања: 9 мин

AppBar — је виџет горњег панела екрана у Flutter-у, који имплементира Material Design компоненту са насловом, акцијама, дугметом за навигацију и картицама. За разлику од прилагођеног панела на Row или Stack, AppBar пружа готову архитектуру са исправном висином од 56dp (48dp у скупљеном стању) и аутоматском обрадом SafeArea. Према Flutter API Reference (2026), AppBar подржава анимацију при скроловању кроз SliverAppBar и интеграцију са Material 3 кроз параметар forceMaterialTransparency. У типичној мобилној апликацији, AppBar игра улогу навигационог и информационог чворишта, обједињујући наслов странице, системске акције и пребацивање између секција.

Главно

  • AppBar — виџет горњег панела у Flutter-у са насловом, actions, leading и подршком за TabBar и Material 3
  • Title — текст наслова, центриран или поравнат лево у зависности од платформе
  • Actions — листа виџета-акција (IconButton, PopupMenuButton) постављених десно у AppBar-у
  • Leading — дугме за навигацију лево (иконица „хамбургер" за Drawer или дугме „Назад" за угнежђене екране)
  • Bottom — доња област AppBar-а за уграђивање TabBar, PreferredSize или прилагођених виџета

Шта је AppBar у Flutter-у

AppBar — је стандардна Material компонента горњег панела која се приказује у горњем делу Scaffold-а. Садржи наслов екрана, дугме за навигацију (обично иконица „хамбургер" или стрелица „Назад") и акције — иконице које отварају претрагу, подешавања или друге функције. AppBar се аутоматски прилагођава платформи: на Android-у се користи стандардни Material bottom-shadow, на iOS-у — равнији дизајн са провидношћу.

AppBar имплементира интерфејс PreferredSizeWidget, што значи да је његова висина фиксна и позната пре изградње. Подразумевано, висина AppBar-а износи 56dp на Android-у и 44dp на iOS-у у портретној оријентацији, узимајући у обзир SafeArea на врху. Ова карактеристика омогућава Scaffold-у да унапред израчуна расположиви простор за body, избегавајући прекомпоновку при рендеровању.

Према Flutter Material Library Guide (2026), AppBar је прошао кроз неколико итерација: у Flutter 1.x је био једноставан контејнер са текстом, у Flutter 2.x је добио подршку за Material 3 и flexibleSpace, а у Flutter 3.x — интеграцију са System UI (боја статусне траке, провидност). Модерни AppBar подржава Dynamic Color од Material You на уређајима са Android 12+.

Структура AppBar-а: својства и параметри

AppBar пружа скуп параметара који контролишу сваки део горњег панела. Разумевање ових својстава омогућава флексибилно подешавање панела за било које захтеве дизајна без креирања прилагођених решења.

СвојствоТипОпис
titleWidget?Главни наслов панела, обично Text са називом екрана
leadingWidget?Виџет лево од наслова (дугме „Назад" или иконица менија)
actionsList<Widget>?Листа виџета-акција десно (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Доња област за TabBar или прилагођени виџет
flexibleSpaceWidget?Позадински виџет који се анимира при скроловању у SliverAppBar-у
backgroundColorColor?Боја позадине панела, која замењује боју теме
elevationdoubleСенка испод панела, која ствара ефекат подизања изнад садржаја
centerTitlebool?Центрирање наслова (true — Material 3 понашање, false — Android стил)

Title и leading: подешавање наслова и навигације

Својство title прихвата било који виџет, али најчешће се користи Text са подешавањем стила кроз TextStyle. За дугачке наслове препоручује се умотавање title у Flexible како би се текст правилно скратио при недостатку простора. Својство leading се аутоматски замењује са BackButton при преласку на угнежђени екран кроз Navigator.push, ако није експлицитно постављено.

Actions: постављање иконица акција

Листа actions садржи виџете поравнате уз десну ивицу AppBar-а. Сваки елемент не би требало да буде шири од 48dp (стандард Material Design). За груписање акција користите PopupMenuButton — ово скрива мање важне опције у падајућем менију и поштује Material препоруке за густину интерфејса.

Прилагођавање AppBar-а: стилови, боје и понашање

AppBar подржава дубоко прилагођавање кроз својства боје, сенке и маргина. Основни изглед се наслеђује из теме апликације, али свако својство се може појединачно заменити. Размотримо главне сценарије подешавања.

Боја позадине AppBar-а се поставља кроз backgroundColor. Ако није наведена, користи се appBarTheme из ThemeData. У Material 3, боја AppBar-а се аутоматски израчунава из ColorScheme.primary, али се може заменити за одређени екран. За провидни AppBar (често се користи у профилима) поставите backgroundColor: Colors.transparent са elevation: 0.

Својство elevation управља сенком испод AppBar-а. Вредност 0 уклања сенку, стварајући ефекат „равног" панела, што је релевантно за Material 3. Вредност 4 даје стандардну Material Design сенку. За прилагођено управљање сенком користите shadowColor — боју сенке која визуелно одваја панел од садржаја.

За управљање бојом текста у AppBar-у користите foregroundColor. Ово својство утиче на боју наслова, иконица и текста у actions. При промени backgroundColor аутоматски се бира контрастни foregroundColor, али се може принудно поставити за нестандардне дизајне.

SliverAppBar: анимирана верзија AppBar-а

SliverAppBar — је проширење AppBar-а за употребу унутар CustomScrollView-а, које подржава анимацију при скроловању: скупљање (collapsing), паралакс ефекат и закачење (pinned). За разлику од стандардног AppBar-а, SliverAppBar је sliver виџет и може динамички да мења величину у зависности од позиције скроловања.

Главни режими SliverAppBar-а одређују се комбинацијом својстава pinned, floating и snap. У pinned режиму панел увек остаје видљив у горњем делу екрана. У floating режиму појављује се при скроловању уназад. Комбинација floating + snap ствара понашање „лепљивог" панела који излази при најмањем скроловању нагоре, што се често користи у вестима.

Према Flutter API SliverAppBar (2026), за коришћење SliverAppBar-а потребно је заменити обичан ListView или Column са CustomScrollView-ом са sliver виџетима. Scaffold наставља да ради исправно, али својство appBar Scaffold-а мора бити null — SliverAppBar се поставља унутар CustomScrollView-а као први sliver.

Пример подешавања AppBar-а у апликацији

Размотримо пример AppBar-а са претрагом, падајућим менијем и TabBar-ом. Овај код демонстрира типичну конфигурацију горњег панела у продукцијској апликацији на Flutter-у.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Каталог'),
    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('Подешавања')),
          const PopupMenuItem(value: 'about', child: Text('О апликацији')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

У примеру, AppBar садржи центрирани наслов, дугме за отварање Drawer-а лево, иконицу претраге и падајући мени десно. TabBar у bottom омогућава пребацивање између категорија производа. Ова конфигурација покрива већину сценарија мобилних апликација: навигација, претрага, додатне опције и пребацивање између секција — све у једном горњем панелу.

Често постављана питања

Како променити висину AppBar-а у Flutter-у?

Висина AppBar-а је фиксна (56dp) и не може се директно променити. За прилагођену висину користите PreferredSize, умотавајући у њега прилагођени виџет жељене висине. Алтернативно користите SliverAppBar са collapsedHeight за флексибилно управљање величином у скупљеном стању без губитка функционалности стандардног панела.

Како уклонити сенку испод AppBar-а?

Поставите својство elevation: 0 у конструктору AppBar-а. Ово ће уклонити сенку и учинити панел визуелно равним, што одговара стилистици Material 3. За потпуну контролу користите shadowColor: Colors.transparent да замените боју сенке без промене elevation, ако треба да сачувате z-координату.

По чему се AppBar разликује од SliverAppBar-а?

AppBar — статични панел фиксне висине постављен у Scaffold.appBar. SliverAppBar — динамичка верзија која се користи унутар CustomScrollView-а и може се скупљати, закачити и анимирати при скроловању. SliverAppBar пружа својства collapsedHeight, expandedHeight, pinned и floating за флексибилно управљање понашањем при скроловању.

Како додати претрагу у AppBar?

Додајте IconButton са иконицом претраге у листу actions. При притиску можете позвати showSearch са прилагођеним SearchDelegate-ом који отвара екран претраге са аутоматском анимацијом. Алтернативно — замените title на TextField, претварајући AppBar у траку за претрагу на месту, што је згодно за каталоге и листе.

Зашто се наслов не центрира у AppBar-у?

Подразумевано, centerTitle је null, а понашање зависи од платформе: на Android-у наслов је поравнат лево, на iOS-у — по центру. Експлицитно поставите centerTitle: true за принудно центрирање на обе платформе. Ако се наслов не центрира због leading, проверите да leading није null — његово присуство помера наслов удесно.

Резиме

  • AppBar — стандардни горњи панел у Flutter-у са насловом, leading, actions и bottom за TabBar, аутоматски узима у обзир SafeArea
  • Title — централни елемент панела који прихвата било који виџет са подешавањем центрирања кроз centerTitle
  • Actions — листа виџета-акција десно, сваки ширине до 48dp према стандарду Material Design
  • Leading — дугме за навигацију лево, аутоматски замењено са BackButton при преласку на угнежђени екран
  • SliverAppBar — проширење AppBar-а за CustomScrollView са подршком за скупљање, закачење и паралакс ефекат
  • Material 3 — AppBar подржава Dynamic Color, провидност и NavigationBar кроз параметар forceMaterialTransparency
  • Прилагођавање — својства backgroundColor, elevation, foregroundColor и shadowColor омогућавају прецизно подешавање изгледа за дизајн пројекта

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође