AppBar — bu nima, sozlash va Flutter vidjetlari

Muallif: IT Sectr Nashr etilgan: 2026-07-02 O'qish vaqti: 9 daq

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 — Flutter-da sarlavha, actions, leading va TabBar hamda Material 3 qo'llab-quvvatlashi bilan yuqori panel vidjeti
  • Title — platformaga qarab markazlashtirilgan yoki chapga tekislangan sarlavha matni
  • Actions — AppBar-da o'ng tomonda joylashgan harakat vidjetlari ro'yxati (IconButton, PopupMenuButton)
  • Leading — chap tomonda navigatsiya tugmasi (Drawer uchun "gamburger" belgisi yoki ichki ekranlar uchun "Orqaga" tugmasi)
  • Bottom — TabBar, PreferredSize yoki odatiy vidjetlarni joylashtirish uchun AppBar-ning pastki maydoni

Flutter-da AppBar nima

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 tuzilishi: xususiyatlar va parametrlar

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.

XususiyatTurTavsif
titleWidget?Panelning asosiy sarlavhasi, odatda ekran nomi bilan Text
leadingWidget?Sarlavhaning chap tomonidagi vidjet ("Orqaga" tugmasi yoki menyu belgisi)
actionsList<Widget>?O'ngdagi harakat vidjetlari ro'yxati (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?TabBar yoki odatiy vidjet uchun pastki maydon
flexibleSpaceWidget?SliverAppBar-da aylantirishda animatsiya qilinadigan fon vidjeti
backgroundColorColor?Panelning fon rangi, tema rangini bekor qiladi
elevationdoublePanel ostidagi soya, tarkib ustida ko'tarish effektini yaratadi
centerTitlebool?Sarlavhani markazlashtirish (true — Material 3 xatti-harakati, false — Android uslubi)

Title va leading: sarlavha va navigatsiyani sozlash

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: harakat belgilarini joylashtirish

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-ni moslashtirish: uslublar, ranglar va xatti-harakat

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: AppBar-ning animatsiyali versiyasi

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.

Ilovada AppBar-ni sozlash misoli

AppBar misolini qidirish, ochiladigan menyu va TabBar bilan ko'rib chiqaylik. Ushbu kod Flutter-dagi ishlab chiqarish ilovasida yuqori panelning odatda konfiguratsiyasini namoyish etadi.

dart
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

Flutter-da AppBar balandligini qanday o'zgartirish mumkin?

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 ostidagi soyani qanday olib tashlash mumkin?

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 SliverAppBar dan nima bilan farq qiladi?

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.

AppBar-ga qidirishni qanday qo'shish mumkin?

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.

Nima uchun sarlavha AppBar-da markazlashmaydi?

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

  • AppBar — Flutter-da sarlavha, leading, actions va bottom bilan TabBar uchun standart yuqori panel, SafeArea-ni avtomatik hisobga oladi
  • Title — centerTitle orqali markazlashtirish sozlamasi bilan istalgan vidjetni qabul qiladigan panelning markaziy elementi
  • Actions — Material Design standarti bo'yicha har biri 48dp gacha kenglikdagi o'ngdagi harakat vidjetlari ro'yxati
  • Leading — chapdagi navigatsiya tugmasi, ichki ekranga o'tishda avtomatik BackButton bilan almashtiriladi
  • SliverAppBar — yig'ilish, mahkamlash va paralaks effekti qo'llab-quvvatlashi bilan CustomScrollView uchun AppBar kengaytmasi
  • Material 3 — AppBar Dynamic Color, shaffoflik va forceMaterialTransparency parametri orqali NavigationBar-ni qo'llab-quvvatlaydi
  • Moslashtirish — backgroundColor, elevation, foregroundColor va shadowColor xususiyatlari ko'rinishni loyiha dizayniga aniq sozlash imkonini beradi

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.

Loyihani muhokama qilish

Shuningdek o'qing