📦 ما هو Container؟
Container هي واحدة من أكثر الودجتات استخدامًا في فلاتر. وهي عبارة عن صندوق مرن متعدد الاستخدامات يستخدم لتصميم وتنسيق العناصر، مثل:
- التحكم بالحجم (width / height)
- التحكم بالهوامش والفراغات (margin / padding)
- التحكم بالألوان والخلفيات (color / decoration)
- التحكم بالمحاذاة (alignment)
- التحكم بالحدود والانحناءات (border / borderRadius)
- التحكم بمكان الودجت الطفل داخله
🧱 الشكل العام للـ Container
Container(
width: 100,
height: 100,
margin: EdgeInsets.all(10),
padding: EdgeInsets.symmetric(horizontal: 20),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.blue,
border: Border.all(color: Colors.black, width: 2),
borderRadius: BorderRadius.circular(10),
),
child: Text("Hello Container"),
)Dart🧩 الخصائص (Properties) بالتفصيل:
1. width و height ✅
- لتحديد عرض وارتفاع الـ container.
- القيمة بالـ pixel (بشكل تقريبي).
- إذا لم تحددهم، سيتم استخدام الحجم الافتراضي (اعتمادًا على المحتوى أو الأب).
Container(
width: 200,
height: 100,
)Dart2. color 🟥
- لتحديد لون الخلفية.
- ملاحظة مهمة: لا يمكنك استخدام
colorإذا كنت تستخدمdecorationتحتوي علىcolor.
Container(
color: Colors.red,
)Dartإذا استخدمت:
decoration: BoxDecoration(color: Colors.red)Dartفلا تكتب color مباشرة.
3. decoration 🎨
- تمنحك تحكمًا كاملاً بشكل الخلفية.
- تستخدم
BoxDecoration.
مثال:
Container(
decoration: BoxDecoration(
color: Colors.green,
border: Border.all(color: Colors.black, width: 2),
borderRadius: BorderRadius.circular(15),
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 10,
offset: Offset(4, 4),
),
],
),
)Dartخصائص BoxDecoration:
color: لون الخلفية.border: لتحديد الحدود.borderRadius: لتدوير الحواف.boxShadow: لتطبيق الظلال.gradient: لتطبيق تدرج لوني.image: لوضع صورة كخلفية.
4. padding 🧷
- المسافة داخل الـ container بين حدوده والمحتوى.
- تستخدم
EdgeInsets.
Container(
padding: EdgeInsets.all(16),
child: Text("Text inside padding"),
)Dart5. margin 🧷
- المسافة خارج الـ container بينه وبين العناصر المجاورة.
Container(
margin: EdgeInsets.symmetric(vertical: 10),
)Dart6. alignment 📍
- لتحديد موضع الطفل داخل الـ container.
القيم المتاحة:
Alignment.topLeft
Alignment.topCenter
Alignment.center
Alignment.bottomRight
// إلخ...DartContainer(
alignment: Alignment.centerRight,
child: Text("Aligned"),
)Dart7. constraints ⛓️
- تستخدم لتحديد حدود معينة للحجم، مثل الحد الأدنى أو الأقصى للعرض والارتفاع.
Container(
constraints: BoxConstraints(
minWidth: 100,
maxWidth: 200,
),
)Dart8. child 👶
- وهو العنصر الموجود داخل الـ Container.
- يمكن أن يكون أي ودجت:
Text,Column,Image, إلخ.
9. transform 🌀
- لتدوير، تكبير، أو تحريك الـ Container باستخدام Matrix4.
Container(
transform: Matrix4.rotationZ(0.1),
)Dart10. foregroundDecoration 🖼️
- نفس
decorationلكن يتم تطبيقها فوق الطفل.
11. clipBehavior ✂️
- للتحكم في طريقة قص المحتوى إذا خرج عن الحواف.
- القيم الممكنة:
Clip.none,Clip.hardEdge,Clip.antiAlias,Clip.antiAliasWithSaveLayer.
clipBehavior: Clip.antiAlias,Dart⚠️ ملاحظات مهمة جدًا:
- لا تستخدم
colorوdecorationفي نفس الوقت، إذا استخدمتdecorationتحتوي علىcolorفاحذف الخاصيةcolor. Containerليست الأفضل دائمًا، إذا كنت فقط تريد التوسيع أو التوسيط، استخدمSizedBox,Padding,Align,Center,Expanded… حسب الحاجة.Containerثقيلة قليلًا عند الاستخدام الكبير، فحاول استخدام بدائل إن أمكن.
🎯 بعض الأمثلة العملية:
📌 إنشاء مربع أحمر وسط الشاشة:
Center(
child: Container(
width: 100,
height: 100,
color: Colors.red,
),
)Dart📌 خلفية متدرجة:
Container(
width: 200,
height: 200,
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.blue, Colors.purple],
),
),
)Dart📌 صورة كخلفية:
Container(
width: 300,
height: 200,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/bg.jpg'),
fit: BoxFit.cover,
),
),
)Dart📌 إطار وحدود مستديرة:
Container(
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.blueAccent),
borderRadius: BorderRadius.circular(12),
),
child: Text("مرحبا"),
)Dart✅ خلاصة:
| الخاصية | الغرض |
|---|---|
width / height | تحديد الحجم |
color / decoration | تلوين أو تزيين الصندوق |
padding / margin | تحديد الفراغات |
alignment | تحديد موضع الطفل |
child | وضع عنصر داخلي |
constraints | تحديد قيود الحجم |
transform | لتدوير أو تغيير الشكل |
clipBehavior | قص المحتوى الزائد |