AppBar — Flutter-da ekranın yuxarı panelinin vidjetidir, Material Design komponentini başlıq, hərəkətlər, naviqasiya düyməsi və tablar ilə tətbiq edir. Row və ya Stack üzərindəki fərdi paneldən fərqli olaraq, AppBar düzgün hündürlüyü 56dp (yığılmış vəziyyətdə 48dp) və SafeArea-nın avtomatik işlənməsi ilə hazır arxitektura təqdim edir. Flutter API Reference (2026)-ya görə, AppBar SliverAppBar vasitəsilə sürüşdürmə zamanı animasiyanı və forceMaterialTransparency parametri ilə Material 3 ilə inteqrasiyanı dəstəkləyir. Tipik mobil tətbiqdə AppBar naviqasiya və məlumat mərkəzi rolunu oynayır, səhifə başlığını, sistem hərəkətlərini və bölmələr arasında keçidi birləşdirir.
Əsas məqamlar
AppBar — Scaffold-un yuxarı hissəsində göstərilən standart Material yuxarı panel komponentidir. O, ekran başlığını, naviqasiya düyməsini (adətən "hamburger" ikonu və ya "Geri" oxu) və hərəkətləri — axtarış, parametrlər və ya digər funksiyaları açan ikonları ehtiva edir. AppBar avtomatik olaraq platformaya uyğunlaşır: Android-də standart Material bottom-shadow, iOS-da isə daha düz dizayn və şəffaflıq istifadə olunur.
AppBar PreferredSizeWidget interfeysini tətbiq edir, yəni hündürlüyü sabitdir və qurulmadan əvvəl məlumdur. Standart olaraq AppBar-ın hündürlüyü Android-də 56dp, iOS-da şaquli oriyentasiyada 44dp təşkil edir, yuxarıda SafeArea nəzərə alınmaqla. Bu xüsusiyyət Scaffold-a body üçün mövcud yeri əvvəlcədən hesablamağa imkan verir, render zamanı yenidən düzülmənin qarşısını alır.
Flutter Material Library Guide (2026)-ya görə, AppBar bir neçə iterasiyadan keçmişdir: Flutter 1.x-də sadə mətn konteyneri idi, Flutter 2.x-də Material 3 və flexibleSpace dəstəyi aldı, Flutter 3.x-də isə System UI (status paneli rəngi, şəffaflıq) ilə inteqrasiya əldə etdi. Müasir AppBar Android 12+ cihazlarında Material You-dan Dynamic Color-ı dəstəkləyir.
AppBar yuxarı panelin hər hissəsini idarə edən parametrlər dəsti təqdim edir. Bu xüsusiyyətləri başa düşmək, fərdi həllər yaratmadan paneli istənilən dizayn tələblərinə çevik şəkildə uyğunlaşdırmağa imkan verir.
| Xüsusiyyət | Tip | Təsvir |
|---|---|---|
| title | Widget? | Panelin əsas başlığı, adətən ekran adı ilə Text |
| leading | Widget? | Başlığın solundakı vidjet ("Geri" düyməsi və ya menyu ikonu) |
| actions | List<Widget>? | Sağdakı hərəkət vidjetlərinin siyahısı (IconButton, PopupMenuButton) |
| bottom | PreferredSizeWidget? | TabBar və ya fərdi vidjet üçün aşağı sahə |
| flexibleSpace | Widget? | SliverAppBar-da sürüşdürmə zamanı animasiya edilən fon vidjeti |
| backgroundColor | Color? | Panelin fon rəngi, tema rəngini ləğv edir |
| elevation | double | Panelin altındakı kölgə, məzmun üzərində qaldırma effekti yaradır |
| centerTitle | bool? | Başlığın mərkəzləşdirilməsi (true — Material 3 davranışı, false — Android stili) |
title xüsusiyyəti istənilən vidjeti qəbul edir, lakin ən çox TextStyle ilə stil konfiqurasiyası olan Text istifadə olunur. Uzun başlıqlar üçün title-ı Flexible-ə bükmək tövsiyə olunur ki, yer çatışmazlığında mətn düzgün kəsilsin. leading xüsusiyyəti, açıq şəkildə təyin edilməyibsə, Navigator.push vasitəsilə iç-içə ekrana keçid zamanı avtomatik olaraq BackButton ilə əvəz olunur.
actions siyahısı AppBar-ın sağ kənarına düzləndirilmiş vidjetləri ehtiva edir. Hər bir element 48dp-dən (Material Design standartı) geniş olmamalıdır. Hərəkətləri qruplaşdırmaq üçün PopupMenuButton istifadə edin — bu, daha az vacib variantları açılan menyuda gizlədir və interfeys sıxlığı üzrə Material tövsiyələrinə əməl edir.
AppBar rəng, kölgə və boşluq xüsusiyyətləri vasitəsilə dərin fərdiləşdirməni dəstəkləyir. Əsas görünüş tətbiqin mövzusundan miras alınır, lakin hər bir xüsusiyyət fərdi olaraq ləğv edilə bilər. Əsas konfiqurasiya ssenarilərini nəzərdən keçirək.
AppBar-ın fon rəngi backgroundColor vasitəsilə təyin edilir. Göstərilməyibsə, ThemeData-dən appBarTheme istifadə olunur. Material 3-də AppBar rəngi avtomatik olaraq ColorScheme.primary-dən hesablanır, lakin konkret ekran üçün ləğv edilə bilər. Şəffaf AppBar (tez-tez profillərdə istifadə olunur) üçün backgroundColor: Colors.transparent və elevation: 0 təyin edin.
elevation xüsusiyyəti AppBar altındakı kölgəni idarə edir. 0 dəyəri kölgəni silir, "düz" panel effekti yaradır, bu Material 3 üçün aktualdır. 4 dəyəri standart Material Design kölgəsi verir. Kölgənin fərdi idarəsi üçün shadowColor istifadə edin — paneli məzmundan vizual olaraq ayıran kölgə rəngi.
AppBar-da mətn rəngini idarə etmək üçün foregroundColor istifadə edin. Bu xüsusiyyət başlığın, ikonların və actions mətninin rənginə təsir edir. backgroundColor dəyişdirilərkən avtomatik olaraq kontrastlı foregroundColor seçilir, lakin qeyri-standart dizaynlar üçün məcburi təyin edilə bilər.
SliverAppBar — CustomScrollView daxilində istifadə üçün AppBar-ın genişləndirilməsidir, sürüşdürmə zamanı animasiyanı dəstəkləyir: yığılma (collapsing), paralaks effekti və bərkitmə (pinned). Standart AppBar-dan fərqli olaraq, SliverAppBar sliver-vidjetdir və sürüşdürmə mövqeyindən asılı olaraq ölçüsünü dinamik dəyişə bilər.
SliverAppBar-ın əsas rejimləri pinned, floating və snap xüsusiyyətlərinin kombinasiyası ilə müəyyən edilir. Pinned rejimində panel həmişə ekranın yuxarı hissəsində görünür. Floating rejimində əks sürüşdürmə zamanı görünür. Floating + snap kombinasiyası "yapışqan" panel davranışı yaradır, ən kiçik yuxarı sürüşdürmədə çıxır, bu tez-tez xəbər lentlərində istifadə olunur.
Flutter API SliverAppBar (2026)-ya görə, SliverAppBar istifadə etmək üçün adi ListView və ya Column-ı sliver-vidjetlərlə CustomScrollView ilə əvəz etmək lazımdır. Scaffold düzgün işləməyə davam edir, lakin Scaffold-un appBar xüsusiyyəti null olmalıdır — SliverAppBar CustomScrollView daxilində ilk sliver kimi yerləşdirilir.
AppBar nümunəsini axtarış, açılan menyu və TabBar ilə nəzərdən keçirək. Bu kod Flutter-da istehsal tətbiqində yuxarı panelin tipik konfiqurasiyasını nümayiş etdirir.
Scaffold(
appBar: AppBar(
title: const Text('Kataloq'),
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('Parametrlər')),
const PopupMenuItem(value: 'about', child: Text('Tətbiq haqqında')),
],
),
],
bottom: const TabBar(
tabs: [
Tab(text: 'All'),
Tab(text: 'New'),
Tab(text: 'Popular'),
],
),
),
body: const TabBarView(
children: [
AllProductsPage(),
NewProductsPage(),
PopularProductsPage(),
],
),
)
Nümunədə AppBar mərkəzləşdirilmiş başlıq, solda Drawer açma düyməsi, sağda axtarış ikonu və açılan menyu ehtiva edir. TabBar bottom-da məhsul kateqoriyaları arasında keçid etməyə imkan verir. Bu konfiqurasiya mobil tətbiqlərin əksər ssenarilərini əhatə edir: naviqasiya, axtarış, əlavə seçimlər və bölmələr arasında keçid — hamısı bir yuxarı paneldə.
Tez-tez verilən suallar
AppBar-ın hündürlüyü sabitdir (56dp) və birbaşa dəyişdirilə bilməz. Fərdi hündürlük üçün PreferredSize istifadə edin, istədiyiniz hündürlükdə fərdi vidjeti ona bükün. Alternativ olaraq, yığılmış vəziyyətdə ölçüsü çevik idarə etmək üçün SliverAppBar-ı collapsedHeight ilə istifadə edin, standart panelin funksionallığını itirmədən.
AppBar konstruktorunda elevation: 0 xüsusiyyətini təyin edin. Bu, kölgəni siləcək və paneli vizual olaraq düz edəcək, Material 3 stilistikasına uyğundur. Tam nəzarət üçün shadowColor: Colors.transparent istifadə edin, elevation dəyişmədən kölgə rəngini ləğv etmək üçün, z-koordinatını saxlamaq lazımdırsa.
AppBar — Scaffold.appBar-da yerləşdirilən sabit hündürlüklü statik panel. SliverAppBar — CustomScrollView daxilində istifadə olunan dinamik versiya, sürüşdürmə zamanı yığıla, bərkidilə və animasiya edilə bilər. SliverAppBar sürüşdürmə zamanı davranışı çevik idarə etmək üçün collapsedHeight, expandedHeight, pinned və floating xüsusiyyətlərini təqdim edir.
actions siyahısına axtarış ikonu ilə IconButton əlavə edin. Basıldıqda, avtomatik animasiya ilə axtarış ekranını açacaq fərdi SearchDelegate ilə showSearch çağırıla bilər. Alternativ olaraq — title-ı TextField ilə əvəz edin, AppBar-ı yerində axtarış sətrinə çevirin, bu kataloqlar və siyahılar üçün əlverişlidir.
Standart olaraq centerTitle null-a bərabərdir və davranış platformadan asılıdır: Android-də başlıq sola düzləndirilir, iOS-da mərkəzə. Hər iki platformada məcburi mərkəzləşdirmə üçün centerTitle: true təyin edin. Başlıq leading səbəbindən mərkəzləşmirsə, leading-in null olmadığını yoxlayın — onun mövcudluğu başlığı sağa sürüşdürür.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun