
- بواسطة x32x01 ||
استخدم الـ Widgets في Flutter بشكل احترافي
كل Widget في Flutter ليه دور محدد، واختيارك الصح بيفرق في سرعة التطبيق وجودة الكود. خليني أقولك شوية نصائح هتخليك تشتغل باحتراف وتتفادى الأخطاء الشائعة 
لما جزء صغير بس بيتغير
لو عندك صفحة كبيرة وكل اللي بيتغير فيها حاجة بسيطة زي زرار أو Text، بلاش تخليها StatefulWidget بالكامل.ليه؟ لأن ده بيخلي Flutter يعمل Rebuild للصفحة كلها، وده بيأثر على الأداء خصوصًا لو الصفحة تقيلة.

ده بيخليك تغيّر عنصر محدد من غير ما تعيد بناء الصفحة كلها، فالتطبيق يفضل سريع وخفيف.
Padding ولا SizedBox؟
كتير مننا بيستخدم SizedBox(height: 10) علشان يعمل مسافة بين العناصر، بس دي مش دايمًا الطريقة الأنسب.
ده بيخلي الكود أوضح والـ UI منظم أكتر.
أما SizedBox فخليه للمسافات الثابتة فقط.
ValueNotifier بدل SetState
لو بتستخدم setState كتير، اعرف إنها بتعمل Rebuild لكل الصفحة.لكن في حالة التحديثات الصغيرة، الأفضل تستخدم ValueNotifier مع ValueListenableBuilder.

Expanded vs Flexible
في عناصر Row أو Column، ساعات بنستخدم Expanded على طول، لكن خليك فاهم:- Expanded بياخد كل المساحة المتاحة.
- Flexible بيديك تحكم أدق في النسبة اللي بياخدها العنصر.
FutureBuilder ولا StreamBuilder؟
الفرق بسيط لكنه مهم جدًا:- استخدم FutureBuilder لما البيانات بتيجي مرة واحدة (زي API Call).
- استخدم StreamBuilder لما البيانات بتتحدث باستمرار (زي الشات أو الموقع الجغرافي).
Visibility ولا Opacity ولا Offstage؟
- Opacity(0) بتخفي العنصر بس بتسيب مكانه.
- Visibility بتقدر تخفيه وتخلي أو تشيل مكانه.
- Offstage بتخفيه من العرض تمامًا بس بيبقى في الشجرة (Widget Tree).
SafeArea بدل Padding للحواف
لو خايف العناصر تلمس الـ notch أو الحواف، استخدم SafeArea.دي بتظبط مكان العناصر تلقائيًا حسب نوع الجهاز، وبتريحك من كتابة Padding يدوي.

كل Widget في Flutter ليها وظيفة معينة، واختيارك الذكي هو اللي بيفرق بين كود عادي وكود محترف.
خلي استخدامك دقيق ومتزن، وهتلاحظ فرق كبير في الأداء وسلاسة التطبيق


التعديل الأخير: