📦 ما هو 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 | قص المحتوى الزائد |