AppBar — ما هو، تكوينه ووجدات Flutter

المؤلف: IT Sectr نُشر: 2026-07-02 وقت القراءة: 9 دق

AppBar هو ويجت اللوحة العلوية للشاشة في Flutter يقوم بتنفيذ مكون Material Design بعنوان وإجراءات وزر تنقل وعلامات تبويب. بالخلاف من اللوحة المخصصة القائمة على Row أو Stack، يوفر AppBar معمارية جاهزة بارتفاع صحيح يبلغ 56دبق (48دبق في الحالة المطوية) ومعالجة تلقائية SafeArea. وفقًا لـ Flutter API Reference (2026)، يدعم AppBar الرسوم المتحركة عند التمرير عبر SliverAppBar والتكامل مع Material 3 من خلال الوساط forceMaterialTransparency. في تطبيق الهاتف النموذجي، يعمل AppBar كمركز تنقل ومعلومات، يجمع عنوان الصفحة وإجراءات النظام والتبديل بين الأقسام.

النقاط الرئيسية

  • AppBar — ويجت اللوحة العلوية في Flutter بعنوان وactions وleading ودعم TabBar وMaterial 3
  • Title — نص العنوان، يتم توسيطه أو محاذاته لليسار حسب المنصة
  • Actions — قائمة ويجدات الإجراء (IconButton، PopupMenuButton) موضوعة على اليمين في AppBar
  • Leading — زر تنقل على اليسار (أيقونة «هامبرجر» لـ Drawer أو زر «رجوع» للشاشات المتداخلة)
  • Bottom — المنطقة السفلية لـ AppBar لتضمين TabBar أو PreferredSize أو ويجدات مخصصة

ما هو AppBar في Flutter

AppBar هو مكون Material قياسي للوحة العلوية يظهر في أعلى Scaffold. يحتوي على عنوان الشاشة وزر تنقل (عادة أيقونة «هامبرجر» أو سهم «رجوع») وإجراءات — أيقونات تفتح البحث أو الإعدادات أو وظائف أخرى. يتكيف AppBar تلقائيًا مع المنصة: في Android يستخدم ظل Material سفلي قياسيًا، في iOS — تصميم أكثر تساطحًا مع شفافية.

يقوم AppBar بتنفيذ واجهة PreferredSizeWidget، مما يعني أن ارتفاعه ثابت ومعروف قبل البناء. افتراضيًا، يبلغ ارتفاع AppBar 56دبق على Android و 44دبق على 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: الخصائص والوسائط

AppBar يوفر مجموعة من الوسائط التي تتحكم في كل جزء من اللوحة العلوية. يتيح فهم هذه الخصائص تخصيص مرن للوحة لأي متطلبات تصميم دون حاجة لإنشاء حلول مخصصة.

الخاصيةالنوعالوصف
titleWidget?العنوان الرئيسي للوحة، عادة Text باسم الشاشة
leadingWidget?ويجت على يسار العنوان (زر «رجوع» أو أيقونة القائمة)
actionsList<Widget>?قائمة ويجدات الإجراء على اليمين (IconButton، PopupMenuButton)
bottomPreferredSizeWidget?المنطقة السفلية لـ TabBar أو ويجت مخصص
flexibleSpaceWidget?ويجت خلفي يتحرك عند التمرير في SliverAppBar
backgroundColorColor?لون خلفية اللوحة، يلغي لون الثيم
elevationdoubleظل تحت اللوحة، يخلق تأثير ارتفاع فوق المحتوى
centerTitlebool?توسيط العنوان (true — سلوك Material 3، false — نمط Android)

Title وleading: تكوين العنوان والتنقل

تقبل الخاصية title أي ويجت، ولكن الأكثر شيوعًا هو استخدام Text مع تكوين النمط عبر TextStyle. للعناوين الطويلة، يوصى بتغليف title في Flexible لضمان قطع النص بشكل صحيح عند ضيق المساحة. تتم استبدال الخاصية leading تلقائيًا بـ BackButton عند التنقل إلى شاشة متداخلة عبر Navigator.push، إذا لم يتم تعيينه صراحة.

Actions: وضع أيقونات الإجراء

تحتوي قائمة actions على ويجدات محاذاة للحافة اليمنى لـ AppBar. يجب ألا يزيد عرض كل عنصر عن 48دبق (معيار Material Design). لتجميع الإجراءات، استخدم PopupMenuButton — هذا يخفي الخيارات الأقل أهمية في قائمة منبثقة ويتوافق مع توصيات Material بشأن كثافة الواجهة.

تخصيص AppBar: الأنماط والألوان والسلوك

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

SliverAppBar هو امتداد AppBar للاستخدام داخل CustomScrollView يدعم الرسوم المتحركة عند التمرير: الطي وتأثير التنوع والتثبيت. وبالخلاف من AppBar القياسي، فإن SliverAppBar هو ويجت sliver ويمكنه تغيير الحجم ديناميكيًا حسب موقع التمرير.

يتم تحديد الأوضاع الرئيسية لـ SliverAppBar من خلال المزيج من خصائص pinned وfloating وsnap. في وضع pinned، تبقى اللوحة دائمًا مرئية في أعلى الشاشة. في وضع floating، تظهر عند التمرير للخلف. يخلق المزيج floating + snap سلوك لوحة «لاصقة» تظهر عند أدنى تمرير للأعلى، وهو ما يستخدم عادة في خلافات الأخبار.

وفقًا لـ Flutter API SliverAppBar (2026)، لاستخدام SliverAppBar يلزم استبدال ListView أو Column العادي بـ CustomScrollView يحتوي على ويجدات sliver. يستمر Scaffold في العمل بشكل صحيح، ولكن يجب أن تكون خاصية appBar لـ Scaffold فارغة — يتم وضع SliverAppBar داخل CustomScrollView كأول sliver.

مثال تكوين AppBar في تطبيق

دعنا نلقي نظرة على مثال AppBar مع البحث والقائمة المنبثقة وTabBar. يوضح هذا الكود تكوينًا نموذجيًا للوحة العلوية في تطبيق إنتاجي على Flutter.

dart
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 في الأسفل بالتبديل بين فئات المنتجات. يغطي هذا التكوين معظم سيناريوهات تطبيقات الهاتف: التنقل والبحث والخيارات الإضافية وتبديل الأقسام — كلها في لوحة علوية واحدة.

الأسئلة الشائعة

كيف أغير ارتفاع AppBar في Flutter؟

ارتفاع AppBar ثابت (56دبق) ولا يمكن تغييره مباشرة. للحصول على ارتفاع مخصص، استخدم PreferredSize يحتوي على ويجت مخصص بالارتفاع المطلوب. بديلاً، استخدم SliverAppBar مع collapsedHeight لإدارة مرنة للحجم في الحالة المطوية دون فقدان وظيفة اللوحة القياسية.

كيف أزيل الظل تحت AppBar؟

ضبط الخاصية elevation: 0 في منشئ AppBar. هذا يزيل الظل ويجعل اللوحة مسطحة بصريًا، متوافقة مع أنماط Material 3. للتحكم الكامل، استخدم shadowColor: Colors.transparent لتجاوز لون الظل دون تغيير elevation، إذا كنت تحتاج للحفاظ على إحداثيات z.

ما الفرق بين AppBar وSliverAppBar؟

AppBar هو لوحة ثابتة بارتفاع محدد، موضوعة في Scaffold.appBar. SliverAppBar هو نسخة ديناميكية مستخدمة داخل CustomScrollView يمكنها الانطواء والتثبيت والتحريك عند التمرير. يوفر SliverAppBar خصائص collapsedHeight وexpandedHeight وpinned وfloating لإدارة مرنة للسلوك عند التمرير.

كيف أضيف البحث إلى AppBar؟

أضف IconButton بأيقونة بحث إلى قائمة actions. عند الضغط، يمكنك استدعاء showSearch مع SearchDelegate مخصص يفتح شاشة البحث برسوم متحركة تلقائية. بديلاً، استبدل العنوان بـ TextField، محولاً AppBar إلى شريط بحث مضمن، وهو أمر مناسب للكتالوجات والقوائم.

لماذا لا يتم توسيط العنوان في AppBar؟

افتراضيًا centerTitle هو null، ويعتمد السلوك على المنصة: في Android يتم محاذاة العنوان لليسار، في iOS — للمركز. ضبط centerTitle: true صراحة لفرض التوسيط على كلتا المنصتين. إذا لم يتم توسيط العنوان بسبب leading، تحقق من أن leading ليس null — وجوده يزيح العنوان إلى اليمين.

الملخص

  • AppBar — لوحة علوية قياسية في Flutter بعنوان وleading وactions وbottom لـ TabBar، تتعامل تلقائيًا مع SafeArea
  • Title — العنصر المركزي للوحة، يقبل أي ويجت مع تكوين التوسيط عبر centerTitle
  • Actions — قائمة ويجدات الإجراء على اليمين، كل واحد بعرض يصل إلى 48دبق حسب معيار Material Design
  • Leading — زر تنقل على اليسار، يتم استبداله تلقائيًا بـ BackButton عند التنقل إلى شاشة متداخلة
  • SliverAppBar — امتداد AppBar لـ CustomScrollView مع دعم الانطواء والتثبيت وتأثير التنوع
  • Material 3 — AppBar يدعم Dynamic Color والشفافية وNavigationBar من خلال الوساط forceMaterialTransparency
  • التخصيص — تسمح خصائص backgroundColor وelevation وforegroundColor وshadowColor بضبط بصري دقيق لتصميم المشروع

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا