AppBar — Flutter-da ekranning yuqori paneli vidjeti bo'lib, Material Design komponentini sarlavha, harakatlar, navigatsiya tugmasi va tablar bilan amalga oshiradi. Row yoki Stack-dagi odatiy paneldan farqli o'laroq, AppBar to'g'ri balandlik 56dp (yiqilgan holatda 48dp) va SafeArea-ni avtomatik qayta ishlash bilan tayyor arxitektura taqdim etadi. Flutter API Reference (2026) ma'lumotlariga ko'ra, AppBar SliverAppBar orqali aylantirishda animatsiya va forceMaterialTransparency parametri orqali Material 3 bilan integratsiyani qo'llab-quvvatlaydi. Oddiy mobil ilovada AppBar navigatsiya va axborot markazi rolini o'ynaydi, sahifa sarlavhasini, tizim harakatlarini va bo'limlar o'rtasida almashishni birlashtiradi.
Asosiy fikrlar
AppBar — Scaffold-ning yuqori qismida ko'rsatiladigan standart Material yuqori panel komponenti. U ekran sarlavhasini, navigatsiya tugmasini (odatda "gamburger" belgisi yoki "Orqaga" o'qi) va harakatlarni — qidirish, sozlamalar yoki boshqa funksiyalarni ochadigan belgilarni o'z ichiga oladi. AppBar avtomatik ravishda platformaga moslashadi: Android-da standart Material bottom-shadow, iOS-da esa tekisroq dizayn va shaffoflik ishlatiladi.
AppBar PreferredSizeWidget interfeysini amalga oshiradi, ya'ni uning balandligi doimiy va qurishdan oldin ma'lum. Standart bo'yicha, AppBar balandligi Android-da 56dp va iOS-da vertikal yo'nalishda 44dp, yuqorida SafeArea hisobga olingan holda. Bu xususiyat Scaffold-ga body uchun mavjud joyni oldindan hisoblash imkonini beradi, renderlashda qayta joylashishni oldini oladi.
Flutter Material Library Guide (2026) ma'lumotlariga ko'ra, AppBar bir necha iteratsiyadan o'tgan: Flutter 1.x da oddiy matn konteyneri edi, Flutter 2.x da Material 3 va flexibleSpace qo'llab-quvvatlashini oldi, Flutter 3.x da esa System UI (holat paneli rangi, shaffoflik) bilan integratsiyaga ega bo'ldi. Zamonaviy AppBar Android 12+ qurilmalarida Material You dan Dynamic Color-ni qo'llab-quvvatlaydi.
AppBar yuqori panelning har bir qismini boshqaradigan parametrlar to'plamini taqdim etadi. Ushbu xususiyatlarni tushunish, odatiy yechimlar yaratmasdan panelni istalgan dizayn talablariga moslashtirish imkonini beradi.
| Xususiyat | Tur | Tavsif |
|---|---|---|
| title | Widget? | Panelning asosiy sarlavhasi, odatda ekran nomi bilan Text |
| leading | Widget? | Sarlavhaning chap tomonidagi vidjet ("Orqaga" tugmasi yoki menyu belgisi) |
| actions | List<Widget>? | O'ngdagi harakat vidjetlari ro'yxati (IconButton, PopupMenuButton) |
| bottom | PreferredSizeWidget? | TabBar yoki odatiy vidjet uchun pastki maydon |
| flexibleSpace | Widget? | SliverAppBar-da aylantirishda animatsiya qilinadigan fon vidjeti |
| backgroundColor | Color? | Panelning fon rangi, tema rangini bekor qiladi |
| elevation | double | Panel ostidagi soya, tarkib ustida ko'tarish effektini yaratadi |
| centerTitle | bool? | Sarlavhani markazlashtirish (true — Material 3 xatti-harakati, false — Android uslubi) |
title xususiyati istalgan vidjetni qabul qiladi, lekin eng ko'p TextStyle orqali uslub sozlamasi bilan Text ishlatiladi. Uzoq sarlavhalar uchun title-ni Flexible-ga o'rash tavsiya etiladi, matn joy yetishmasligida to'g'ri kesilishi uchun. leading xususiyati, agar aniq belgilanmagan bo'lsa, Navigator.push orqali ichki ekranga o'tishda avtomatik ravishda BackButton bilan almashtiriladi.
actions ro'yxati AppBar-ning o'ng chetiga tekislangan vidjetlarni o'z ichiga oladi. Har bir element 48dp dan keng bo'lmasligi kerak (Material Design standarti). Harakatlarni guruhlash uchun PopupMenuButton dan foydalaning — bu kamroq muhim variantlarni ochiladigan menyuda yashiradi va interfeys zichligi bo'yicha Material tavsiyalariga amal qiladi.
AppBar rang, soya va bo'shliq xususiyatlari orqali chuqur moslashtirishni qo'llab-quvvatlaydi. Asosiy ko'rinish ilova mavzusidan meros qilib olinadi, lekin har bir xususiyat alohida bekor qilinishi mumkin. Asosiy sozlash stsenariylarini ko'rib chiqaylik.
AppBar-ning fon rangi backgroundColor orqali o'rnatiladi. Agar ko'rsatilmagan bo'lsa, ThemeData dan appBarTheme ishlatiladi. Material 3 da AppBar rangi avtomatik ravishda ColorScheme.primary dan hisoblanadi, lekin ma'lum bir ekran uchun bekor qilinishi mumkin. Shaffof AppBar (ko'pincha profillarda ishlatiladi) uchun backgroundColor: Colors.transparent va elevation: 0 o'rnating.
elevation xususiyati AppBar ostidagi soyani boshqaradi. 0 qiymati soyani olib tashlaydi, "tekis" panel effektini yaratadi, bu Material 3 uchun dolzarbdir. 4 qiymati standart Material Design soyasini beradi. Soyani boshqarish uchun shadowColor dan foydalaning — panelni tarkibdan vizual ravishda ajratadigan soya rangi.
AppBar-da matn rangini boshqarish uchun foregroundColor dan foydalaning. Bu xususiyat sarlavha, belgilar va actions matni rangiga ta'sir qiladi. backgroundColor o'zgartirilganda avtomatik ravishda kontrastli foregroundColor tanlanadi, lekin nostandart dizaynlar uchun majburiy o'rnatilishi mumkin.
SliverAppBar — CustomScrollView ichida foydalanish uchun AppBar-ning kengaytmasi bo'lib, aylantirishda animatsiyani qo'llab-quvvatlaydi: yig'ilish (collapsing), paralaks effekti va mahkamlash (pinned). Standart AppBar-dan farqli o'laroq, SliverAppBar sliver-vidjetdir va aylantirish pozitsiyasiga qarab hajmini dinamik o'zgartirishi mumkin.
SliverAppBar-ning asosiy rejimlari pinned, floating va snap xususiyatlari kombinatsiyasi bilan aniqlanadi. Pinned rejimida panel har doim ekranning yuqori qismida ko'rinadi. Floating rejimida orqaga aylantirishda paydo bo'ladi. Floating + snap kombinatsiyasi "yopishqoq" panel xatti-harakatini yaratadi, eng kichik yuqoriga aylantirishda chiqadi, bu ko'pincha yangiliklar lentalarida ishlatiladi.
Flutter API SliverAppBar (2026) ma'lumotlariga ko'ra, SliverAppBar dan foydalanish uchun oddiy ListView yoki Column-ni sliver-vidjetlar bilan CustomScrollView bilan almashtirish kerak. Scaffold to'g'ri ishlashda davom etadi, lekin Scaffold-ning appBar xususiyati null bo'lishi kerak — SliverAppBar CustomScrollView ichida birinchi sliver sifatida joylashtiriladi.
AppBar misolini qidirish, ochiladigan menyu va TabBar bilan ko'rib chiqaylik. Ushbu kod Flutter-dagi ishlab chiqarish ilovasida yuqori panelning odatda konfiguratsiyasini namoyish etadi.
Scaffold(
appBar: AppBar(
title: const Text('Katalog'),
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('Sozlamalar')),
const PopupMenuItem(value: 'about', child: Text('Ilova haqida')),
],
),
],
bottom: const TabBar(
tabs: [
Tab(text: 'All'),
Tab(text: 'New'),
Tab(text: 'Popular'),
],
),
),
body: const TabBarView(
children: [
AllProductsPage(),
NewProductsPage(),
PopularProductsPage(),
],
),
)
Misolda AppBar markazlashtirilgan sarlavha, chapda Drawer ochish tugmasi, o'ngda qidirish belgisi va ochiladigan menyuni o'z ichiga oladi. TabBar bottom da mahsulot toifalari o'rtasida almashish imkonini beradi. Bu konfiguratsiya mobil ilovalarning aksariyat stsenariylarini qamrab oladi: navigatsiya, qidirish, qo'shimcha variantlar va bo'limlar o'rtasida almashish — hammasi bitta yuqori panelda.
Tez-tez so'raladigan savollar
AppBar balandligi doimiy (56dp) va to'g'ridan-to'g'ri o'zgartirib bo'lmaydi. Odatiy balandlik uchun PreferredSize dan foydalaning, kerakli balandlikdagi odatiy vidjetni unga o'rang. Shu bilan birga, yig'ilgan holatda hajmini moslashuvchan boshqarish uchun SliverAppBar-ni collapsedHeight bilan ishlating, standart panel funksionalligini yo'qotmasdan.
AppBar konstruktorida elevation: 0 xususiyatini o'rnating. Bu soyani olib tashlaydi va panelni vizual ravishda tekis qiladi, Material 3 uslubiga mos keladi. To'liq nazorat uchun shadowColor: Colors.transparent dan foydalaning, elevation ni o'zgartirmasdan soya rangini bekor qilish uchun, z-koordinatasini saqlash kerak bo'lsa.
AppBar — Scaffold.appBar da joylashtirilgan doimiy balandlikdagi statik panel. SliverAppBar — CustomScrollView ichida ishlatiladigan dinamik versiya, aylantirishda yig'ilishi, mahkamlanishi va animatsiya qilinishi mumkin. SliverAppBar aylantirishda xatti-harakatni moslashuvchan boshqarish uchun collapsedHeight, expandedHeight, pinned va floating xususiyatlarini taqdim etadi.
actions ro'yxatiga qidirish belgisi bilan IconButton qo'shing. Bosilganda, avtomatik animatsiya bilan qidirish ekranini ochadigan odatiy SearchDelegate bilan showSearch chaqirilishi mumkin. Shu bilan birga — title ni TextField bilan almashtiring, AppBar-ni joyida qidirish satriga aylantiring, bu kataloglar va ro'yxatlar uchun qulay.
Standart bo'yicha centerTitle null ga teng va xatti-harakat platformaga bog'liq: Android da sarlavha chapga tekislanadi, iOS da markazga. Ikkala platformada majburiy markazlashtirish uchun centerTitle: true o'rnating. Agar sarlavha leading sababli markazlashmasa, leading null emasligini tekshiring — uning mavjudligi sarlavhani o'ngga siljitadi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.