AppBar — је виџет горњег панела екрана у Flutter-у, који имплементира Material Design компоненту са насловом, акцијама, дугметом за навигацију и картицама. За разлику од прилагођеног панела на Row или Stack, AppBar пружа готову архитектуру са исправном висином од 56dp (48dp у скупљеном стању) и аутоматском обрадом SafeArea. Према Flutter API Reference (2026), AppBar подржава анимацију при скроловању кроз SliverAppBar и интеграцију са Material 3 кроз параметар forceMaterialTransparency. У типичној мобилној апликацији, AppBar игра улогу навигационог и информационог чворишта, обједињујући наслов странице, системске акције и пребацивање између секција.
Главно
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 пружа скуп параметара који контролишу сваки део горњег панела. Разумевање ових својстава омогућава флексибилно подешавање панела за било које захтеве дизајна без креирања прилагођених решења.
| Својство | Тип | Опис |
|---|---|---|
| title | Widget? | Главни наслов панела, обично Text са називом екрана |
| leading | Widget? | Виџет лево од наслова (дугме „Назад" или иконица менија) |
| actions | List<Widget>? | Листа виџета-акција десно (IconButton, PopupMenuButton) |
| bottom | PreferredSizeWidget? | Доња област за TabBar или прилагођени виџет |
| flexibleSpace | Widget? | Позадински виџет који се анимира при скроловању у SliverAppBar-у |
| backgroundColor | Color? | Боја позадине панела, која замењује боју теме |
| elevation | double | Сенка испод панела, која ствара ефекат подизања изнад садржаја |
| centerTitle | bool? | Центрирање наслова (true — Material 3 понашање, false — Android стил) |
Својство title прихвата било који виџет, али најчешће се користи Text са подешавањем стила кроз TextStyle. За дугачке наслове препоручује се умотавање title у Flexible како би се текст правилно скратио при недостатку простора. Својство leading се аутоматски замењује са BackButton при преласку на угнежђени екран кроз Navigator.push, ако није експлицитно постављено.
Листа actions садржи виџете поравнате уз десну ивицу AppBar-а. Сваки елемент не би требало да буде шири од 48dp (стандард Material Design). За груписање акција користите PopupMenuButton — ово скрива мање важне опције у падајућем менију и поштује Material препоруке за густину интерфејса.
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-а за употребу унутар 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-а са претрагом, падајућим менијем и TabBar-ом. Овај код демонстрира типичну конфигурацију горњег панела у продукцијској апликацији на Flutter-у.
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-а је фиксна (56dp) и не може се директно променити. За прилагођену висину користите PreferredSize, умотавајући у њега прилагођени виџет жељене висине. Алтернативно користите SliverAppBar са collapsedHeight за флексибилно управљање величином у скупљеном стању без губитка функционалности стандардног панела.
Поставите својство elevation: 0 у конструктору AppBar-а. Ово ће уклонити сенку и учинити панел визуелно равним, што одговара стилистици Material 3. За потпуну контролу користите shadowColor: Colors.transparent да замените боју сенке без промене elevation, ако треба да сачувате z-координату.
AppBar — статични панел фиксне висине постављен у Scaffold.appBar. SliverAppBar — динамичка верзија која се користи унутар CustomScrollView-а и може се скупљати, закачити и анимирати при скроловању. SliverAppBar пружа својства collapsedHeight, expandedHeight, pinned и floating за флексибилно управљање понашањем при скроловању.
Додајте IconButton са иконицом претраге у листу actions. При притиску можете позвати showSearch са прилагођеним SearchDelegate-ом који отвара екран претраге са аутоматском анимацијом. Алтернативно — замените title на TextField, претварајући AppBar у траку за претрагу на месту, што је згодно за каталоге и листе.
Подразумевано, centerTitle је null, а понашање зависи од платформе: на Android-у наслов је поравнат лево, на iOS-у — по центру. Експлицитно поставите centerTitle: true за принудно центрирање на обе платформе. Ако се наслов не центрира због leading, проверите да leading није null — његово присуство помера наслов удесно.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође