Scaffold: bu nədir, strukturu və Flutter vidjetləri

Müəllif: IT Sectr Dərc olunub: 2026-07-02 Oxuma vaxtı: 9 dəq

Scaffold — bu Flutter-də əsas Material Design ekran strukturunu AppBar, Drawer, BottomNavigationBar və FloatingActionButton ilə həyata keçirən mərkəzi vidjet-çərçivədir. O, sadəcə elementləri yerləşdirmir, həm də düzgün z-sırası və istifadəçi jestlərinin işlənməsi ilə hazır arxitektura təmin edir. Flutter Documentation (2026)-ya görə, Scaffold SnackBar və BottomSheet daxil olmaqla Material komponentlərinin düzgün işləməsi üçün məcburi kök elementdir. Container və ya Column-dən fərqli olaraq, Scaffold SafeArea, adaptiv fon və klaviatura davranışını avtomatik idarə edir, bu da onu mobil tətbiqlərdə ekranların qurulması üçün standart edir.

Əsas

  • Scaffold — AppBar, Drawer, BottomNavigationBar və FloatingActionButton ilə Flutter-də Material Design ekran strukturunu həyata keçirən vidjet-çərçivə
  • Body — body xassəsi vasitəsilə əsas məzmunun yerləşdirildiyi ekranın mərkəzi sahəsi
  • Drawer — sola sürüşdürmə və ya AppBar-dakı hamburger içarəsi ilə açılan yan menyu
  • FloatingActionButton — Material Design standartına görə sağ aşağı küncdə yerləşdirilən üzən hərəkət düyməsi
  • SnackBar — istifadəçi ilə əlaqə üçün ScaffoldMessenger vasitəsilə çağırılan ekranın aşağı hissəsindəki müvəqqəti bildiriş

Flutter-də Scaffold nədir

Scaffold — bu Material Design kitabxanasından olan vidjet-kompozitordur, ekranın əsas vizual strukturunu formalaşdırır. O, Material tətbiqinin standart nümunəsini həyata keçirir: yuxarı panel, ekran gövdəsi, yan menyu və üzən düymələr. Sadəcə ölçülər və stil təyin edən Container-dən fərqli olaraq, Scaffold bütöv ekranı vahid sistem kimi idarə edir.

Material Design üzrə qurulmuş hər bir Flutter tətbiqi MaterialApp ilə başlayır, onun daxilində hər bir ekran Scaffold-a bürünür. Məhz Scaffold iPhone X və daha yuxarı modellər üçün SafeArea-ı nəzərə alaraq, bütün cihazlarda AppBar-ın düzgün göstərilməsini təmin edir. O, hççinin z-sırasına cavabdehdir: Drawer body üzərində, SnackBar isə bütün interfeysin üzərində, lakin dialoq pəncərələrindən aşağıda göstərilir.

Rəsmi Flutter API Reference (2026)-yə görə, Scaffold SnackBar, BottomSheet və PersistentBottomSheet kimi vidjetlərin düzgün işləməsi üçün məcburi şərtdir. Bu komponentlər Scaffold kontekstinə daxil olmaq üçün InheritedWidget Scaffold.of-dən asılı olduğundan, Scaffold olmadan istisna atırlar. Buna görə də hər hansı məzmunu Scaffold əvəzinə birbaşa Container-də yerləşdirmək, Material funksionallığının itirilməsinə səbəb olan yeni başlayanların ümumi səhvdir.

Vidjet iyerarxiyasında Scaffold

Tipik bir Flutter tətbiqində Scaffold MaterialApp daxilində, adətən cross-platform inkişafda WidgetsApp və ya CupertinoApp altında yerləşir. MaterialApp Navigator və tematik yaradır, Scaffold isə cari ekranın strukturunu müyənləyir. Hər bir ekran özünün unikal AppBar, Drawer və BottomNavigationBar ilə öz Scaffold-ına sahib ola bilər, bu da interfeysi müəyyən bir səhifəyə uyğun şəkildə çevik şəkildə konfiqurasiya etməyə imkan verir.

Dərin fərdiləşdirmə üçün Scaffold NestedScrollView ilə birləşdirilə bilər — bu, parallaks effekti ilə yox olan AppBar kimi mürəkkəb sürüşdürmə effektlərini həyata keçirməyə imkan verir. Lakin əksər hallarda standart Scaffold öz xassələri ilə istehsal-ready ekran qurmaq üçün kifayətdir.

Scaffold strukturu: çərçivənin əsas hissələri

Scaffold bir neçe məcburi və isteğə bağlı zonalardan ibarətdir, hər biri interfeysin müəyyən bir hissəsinə cavabdehdir. Onların bir-biri ilə necə qarşılıqlı əlaqədə olduğunu anlamaq üçün hər bir hissəni ayrıca nəzərdən keçirək.

AppBar — yuxarı panel

AppBar — bu başlıq, naviqasiya düyməsi və hərəkətləri göstərən ekranın yuxarı panelidir. O, avtomatik olaraq 56dp düzgün hündürlüyü alır və çərtməli cihazlar üçün SafeArea-nı nəzərə alır. AppBar-a bottom xassəsindən istifadə edərək vərəqləri dəyişmək üçün TabBar daxil edilə bilər.

Drawer — yan menyu

Drawer — bu soldan çıxan və tətbiqin bölmələri üzrə naviqasiyanı təmin edən paneldir. drawer xassəsi təyin olunarsa, Scaffold avtomatik olaraq AppBar-a hamburger içarəsi əlavə edir. Drawer DrawerHeader, menyu elementləri ilə ListView və istifadəçi məlumatlarını ehtiva edə bilər.

BottomNavigationBar — aşağı naviqasiya

BottomNavigationBar — bu əsas bölmələr arasında keçid üçün ekranın aşağı hissəsindəki paneldir. 2-dən 5-ə qədər etiketli içarələr ehtiva edir və NavigationBar vasitəsilə aktiv göstərici ilə Material 3-ü dəstəkləyir. Scaffold onu ekranın aşağısında yerləşdirir, məzmunun örtülməməsi üçün body-ni avtomatik olaraq yuxarı sürüşdürür.

FloatingActionButton — üzən düymə

FloatingActionButton — bu ekranın sağ aşağı küncündə yerləşdirilən dairəvi düymədir. Ekranda əsas hərəkət üçün istifadə olunur, məsələn, yeni qeyd əlavə etmək və ya mesaj göndərmək. Scaffold extended xassələri vasitəsilə genişləndirilmiş animasiya ilə bir neçə FAB-ı dəstəkləyir.

Body — əsas məzmun

Body — bu əsas məzmunun yerləşdirildiyi ekranın mərkəzi sahəsidir. Body kimi hər hansı vidjet çıxış edə bilər: Column, ListView, GridView, Stack və ya fərdi kompozisiya. Scaffold AppBar, BottomNavigationBar və SafeArea-nı nəzərə alaraq body hündürlüyünü avtomatik hesablayır, bu da ölçülərin əl ilə tənzimlənməsinə ehtiyacı aradan qaldırır.

Scaffold-un əsas xassələri

Scaffold ekranın görünüşünü və davranışını konfiqurasiya etmək üçün 30-dan çox xassə təmin edir. Onların arasında həm məcburi (body), həm də boşluqları, fonu və klaviatura vəziyyətini idarə edən isteğə bağlı xassələr var. Hər bir xassəni başa düşmək interfeysi dizayn tələblərinə uyğun şəkildə dəqiq tənzimləməyə kömək edir.

XassəTipIzah
appBarPreferredSizeWidget?Başlıq və hərəkətlərlə ekranın yuxarı paneli
bodyWidget?AppBar və BottomNavigationBar arasında ekranın əsas məzmunu
drawerWidget?Sola sürüşdürməklə açılan yan panel
bottomNavigationBarWidget?Aşağı naviqasiya paneli (BottomNavigationBar və ya NavigationBar)
floatingActionButtonWidget?Əsas hərəkətin üzən düyməsi
backgroundColorColor?Mövzunu ləğv edən Scaffold fon rəngi
resizeToAvoidBottomInsetboolKlaviatura görünəndə body-nin avtomatik sıxılması

resizeToAvoidBottomInset xassəsi formalarla işlərkən xüsusilə vacibdir: true (standart) olaraq təyin edildikdə, Scaffold klaviatura görünəndə body-ni avtomatik sıxır ki, daxiletmə sahƏsi görünür qalsın. Bu, fərdi klaviatura dinləyiciləri yazmaq ehtiyacını aradan qaldırır. SingleChildScrollView ilə fərdi ssenarilər üçün xassə söndürülə bilər.

Tətbiqdə Scaffold istifadəsi nümunəsi

Material komponentlərinin tam dəsti ilə Scaffold-un praktiki nümunəsini nəzərdən keçirək. Kod AppBar, Drawer, BottomNavigationBar, FloatingActionButton və SnackBar ilə ekran yaradır — Flutter-də mobil tətbiqin tipik strukturu.

dart
class MainScreen extends StatefulWidget {
  const MainScreen({super.key});

  @override
  State<MainScreen> createState() => _MainScreenState();
}

class _MainScreenState extends State<MainScreen> {
  int selectedIndex = 0;

  final List<Widget> pages = [
    const HomePage(),
    const SearchPage(),
    const ProfilePage(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Mənim Tətbiqim'),
        actions: [
          IconButton(icon: const Icon(Icons.search), onPressed: () {}),
        ],
      ),
      body: pages[selectedIndex],
      drawer: Drawer(
        child: ListView(
          children: [
            const DrawerHeader(child: Text('Menyu')),
            ListTile(title: const Text('Parametrlər'), onTap: () {}),
          ],
        ),
      ),
      bottomNavigationBar: NavigationBar(
        selectedIndex: selectedIndex,
        onDestinationSelected: (int index) {
          setState(() => selectedIndex = index);
        },
        destinations: const [
          NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
          NavigationDestination(icon: Icon(Icons.search), label: 'Search'),
          NavigationDestination(icon: Icon(Icons.person), label: 'Profile'),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          ScaffoldMessenger.of(context).showSnackBar(
            const SnackBar(content: Text('Əməliyyat tamamlandı')),
          );
        },
        child: const Icon(Icons.add),
      ),
    );
  }
}

Nümunədə köhnəlmiş BottomNavigationBar əvəzinə Material 3-dən NavigationBar istifadə olunur. Scaffold bütün hissələri avtomatik birləşdirir: Drawer açılanda SnackBar gizlədir, vərəqlər dəyişdiriləndə body yenilənir, FloatingActionButton isə yerində qalır. ScaffoldMessenger iyerarxiyada bir neçə Scaffold olsa belə SnackBar-ın göstərilməsinə zəmanət verir.

Scaffold və Material 3: konfiqurasiya xüsusiyyətləri

Material 3 (M3) — bu Google tərəfindən 2023-cü ildə təqdim edilmiş Material Design-in təkamülüdür. M3-də Scaffold bir sıra dəyişikliklər aldı: BottomNavigationBar əvəzinə yeni NavigationBar vidjeti, ColorScheme.fromSeed vasitəsilə Dynamic Color dəstəyi və komponentlərin boşluqları və hündürlüyü üzrə yenilənmiş tövsiyələr. M3-ə keçid Scaffold-un dəyişdirilməsini tələb etmir — tətbiqin mövzusunu yeniləmək kifayətdir.

Layihədə Material 3-ü aktivləşdirmək üçün ThemeData-da useMaterial3: true təyin etmək lazımdır. Scaffold vizual görünüşü avtomatik uyğullaşdırır: boşluqlar böyüyür (16dp əvəzinə 24dp), rənglər seed-rəngdən hesablanır, FloatingActionButton isə yuvarlaq köşələrlə daha böyük ölçülər alır. Bununla belə, Scaffold-un bütün mövcud xassələri işlək qalır.

Material Design 3 Specification (2026)-ya görə, BottomNavigationBar əvəzinə üç-beş bəndli NavigationBar istifadə etmək tövsiyə olunur. Scaffold hər iki variantı dəstəkləyir, lakin NavigationBar Pixel cihazlarında adaptivlik və Material You üçün daha yaxşı dəstək təmin edir.

Scaffold-un Material 3 üçün konfiqurasiyası

Scaffold-un M3 ilə düzgün işləməsi üçün mövzunu yeniləmək və BottomNavigationBar-ı NavigationBar ilə əvəz etmək kifayətdir. Rənglər ColorScheme.fromSeed vasitəsilə avtomatik hesablanacaq, Scaffold isə boşluqları yeni standartlara uyğunlaşdıracaq. Lazım olduqda backgroundColor birbaşa ləğv edilə bilər.

Tez-tez verilən suallar

Scaffold Container-dən nə ilə fərqlənir?

Scaffold — bu Material komponentləri (AppBar, Drawer, SnackBar) dəstəyi ilə bütöv ekranın vidjet-çərçivəsidir, Container isə ekran strukturunu idarə etmədən tək bir övlad elementi üçün əsas konteynerdir. Scaffold z-sırası, SafeArea və jestlərin avtomatik işlənməsini təmin edir, Container isə yalnız ölçülər və stil təyin edir.

Bir ekranda iki Scaffold istifadə etmək olarmı?

Texniki olaraq bəli, amma praktikada tövsiyə edilmir. Bir Scaffold-u digərinin içinə yerləşdirsəniz, daxili Scaffold öz AppBar və BottomNavigationBar-ını yaradacaq, bu da panellərin təkrarlanmasına və z-sırasında qarışıqlığa səbəb olacaq. Mürəkkəb maketlər üçün bir Scaffold-un body-si daxilində NestedScrollView və ya Column istifadə edin.

Niyə SnackBar Scaffold olmadan göstərilmir?

SnackBar Scaffold-un övlad komponentidir və düzgün göstərilməsi üçün onun vidjet ağacında olmasını tələb edir. Scaffold ScaffoldState təmin edir, onun vasitəsilə SnackBar görünməni animasiya edir və ekranın aşağı hissəsində yerləşir. Scaffold olmadan SnackBar istisna atır, çünki InheritedWidget vasitəsilə kontekstdə ScaffoldState tapa bilmir.

Scaffold-un fon rəngini necə dəyişmək olar?

Scaffold-un fon rəngi müəyyən ekran üçün mövzu rəngini ləğv edən backgroundColor xassəsi ilə təyin edilir. Fonu qlobal dəyişmək istəyirsinizsə, ThemeData-da scaffoldBackgroundColor təyin edin. Material 3 fon rəngini ColorScheme.surface-dən avtomatik hesablayır, lakin onu əl ilə ləğv etmək olar.

ScaffoldMessenger nədir və nə üçün lazımdır?

ScaffoldMessenger — bu Flutter 2.5-də təqdim edilmiş, iyerarxiyada cari Scaffold-dan asılı olmayaraq SnackBar və BottomSheet göstərməyə imkan verən vasitədir. Köhnəlmiş Scaffold.of(context)-dən fərqli olaraq, ScaffoldMessenger ekranlar arasında naviqasiya zamanı düzgün işləyir və animasiyalar zamanı konteksti itirmir. Rəy bildirmək üçün həmişə ScaffoldMessenger istifadə etmək tövsiyə olunur.

Nəticə

  • Scaffold — Flutter-də AppBar, Drawer, BottomNavigationBar, FloatingActionButton və body ilə Material Design ekran strukturunu həyata keçirən əsas vidjet-çərçivə
  • AppBar — başlıq, hərəkət düymələri və vərəqləri dəyişmək üçün TabBar daxil etmə imkanı ilə yuxarı panel
  • Drawer — hamburger içarəsi vasitəsilə AppBar ilə avtomatik inteqrasiya olunan yan naviqasiya menyusu
  • Body — ətraf panellər və SafeArea nəzərə alınmaqla ölçüsü avtomatik hesablanan əsas məzmun üçün mərkəzi zona
  • ScaffoldMessenger — ekranlar arasında naviqasiya zamanı düzgün işləyən SnackBar və BottomSheet göstərmək üçün müasir API
  • Material 3 — Scaffold useMaterial3 parametri və köhnəlmiş BottomNavigationBar əvəzinə NavigationBar vasitəsilə M3-ü tam dəstəkləyir
  • FloatingActionButton — mövqeyi və animasiyasını fərdiləşdirmə imkanı ilə sağ aşağı küncdə yerləşdirilən əsas hərəkətin üzən düyməsi

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.

Layihəni müzakirə et

Həm də oxuyun