🔹 ما هو TabBar ؟
- TabBar: عبارة عن شريط ألسنة (Tabs) يُستخدم للتنقل بين صفحات أو أقسام مختلفة.
- غالبًا يُستخدم مع:
- TabBarView لعرض المحتوى.
- DefaultTabController لإدارة الحالة (أي تبويب نشط الآن).
- يظهر عادة داخل AppBar، لكن يمكن وضعه في أي مكان.
🔹 المكونات الأساسية
لعمل TabBar تحتاج 3 عناصر:
- DefaultTabController → يدير حالة التبويبات (كم عددها وأي تبويب مفعّل).
- TabBar → شريط التبويبات نفسه.
- TabBarView → المحتوى المرتبط بكل تبويب.
🔹 مثال أساسي
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: 3, // 👈 عدد التبويبات
child: Scaffold(
appBar: AppBar(
title: Text("مثال TabBar"),
bottom: TabBar(
tabs: [
Tab(icon: Icon(Icons.home), text: "الرئيسية"),
Tab(icon: Icon(Icons.star), text: "المفضلة"),
Tab(icon: Icon(Icons.settings), text: "الإعدادات"),
],
),
),
body: TabBarView(
children: [
Center(child: Text("محتوى الرئيسية")),
Center(child: Text("محتوى المفضلة")),
Center(child: Text("محتوى الإعدادات")),
],
),
),
),
);
}
}
Dart🔹 شرح الخصائص المهمة في TabBar
tabs: قائمة التبويبات (كل عنصر غالبًاTab).isScrollable:false(افتراضي) → التبويبات تتوزع بالتساوي.true→ تسمح بالتمرير الأفقي إذا كانت كثيرة.
indicatorColor: لون الخط السفلي اللي يحدد التبويب النشط.indicatorWeight: سمك الخط السفلي.indicatorPadding: مسافة فارغة حول المؤشر.indicatorSize:TabBarIndicatorSize.tab→ يغطي عرض التبويب بالكامل.TabBarIndicatorSize.label→ يغطي فقط النص/الأيقونة.
labelColor: لون النص/الأيقونة في التبويب النشط.unselectedLabelColor: لون التبويبات غير النشطة.labelStyle: تنسيق النص للتبويب النشط.unselectedLabelStyle: تنسيق النص للتبويبات غير النشطة.
🔹 TabBarView
- يمثل المحتوى اللي يتغير مع كل تبويب.
children: قائمة Widgets بعدد مساوي لـtabs.- ملاحظة: العدد في TabBar و TabBarView يجب أن يتطابق وإلا يحدث خطأ.
🔹 أماكن الاستخدام
- التطبيقات متعددة الأقسام (الرئيسية – المفضلة – البحث – الإعدادات).
- عند عرض بيانات من أنواع مختلفة (مثلاً “صور – فيديو – مقالات”).
- لعرض خطوات أو مراحل في تطبيق (مثل خطوات التسجيل أو الشراء).
🔹 نصائح ومحاذير
- إذا التبويبات كثيرة جدًا → اجعل
isScrollable: true. - لا تضع TabBarView داخل ScrollView مباشرة (قد يسبب مشاكل في التمرير).
- دائمًا غلّف الهيكل بـ
DefaultTabControllerأو أدِر التبويبات يدويًا عبرTabController. - يمكنك وضع TabBar في أي مكان (حتى تحت الشاشة) باستخدام bottomNavigationBar في Scaffold.
🔹 مثال مع TabBar في أسفل الشاشة
Scaffold(
appBar: AppBar(title: Text("TabBar في الأسفل")),
body: TabBarView(
children: [
Center(child: Text("صفحة 1")),
Center(child: Text("صفحة 2")),
],
),
bottomNavigationBar: TabBar(
tabs: [
Tab(icon: Icon(Icons.home), text: "الرئيسية"),
Tab(icon: Icon(Icons.person), text: "الحساب"),
],
labelColor: Colors.teal,
unselectedLabelColor: Colors.grey,
indicatorColor: Colors.teal,
),
)
Dart✨ الخلاصة:
- TabBar + TabBarView مع
DefaultTabController= نظام تبويبات كامل. TabBarللتحكم بالشكل (ألوان، مؤشرات، تنسيقات).TabBarViewللمحتوى.- عدد التبويبات = عدد الصفحات دائمًا.