شرح Flutter Context ببساطة للمبتدئين

x32x01
  • بواسطة x32x01 ||

🤯 هو إيه الـ Context وليه صداع لأي حد بيبدأ Flutter؟​

لو بدأت Flutter قريب، فغالبًا أكتر كلمة شوفتها ودوّختك هي context 🤔
المشكلة مش في الكلمة… المشكلة إن ناس كتير بتستخدمها من غير ما تفهمها.
ببساطة شديدة: الـ Context هو عنوان الـ Widget جوه شجرة الـ Widgets 🌳

🏢 تشبيه بسيط يخليك تفهم Context فورًا​

تخيّل إن التطبيق بتاعك عمارة كبيرة 🏢 كل Widget شقة جوه العمارة.
الـ Context بيقول لـ Flutter:
📍 أنا الـ Widget اللي في الدور التالت، الشقة اللي على اليمين
من غير العنوان ده، Flutter مش عارف إنت فين ولا يجيبلك حاجة.


🎯 ليه لازم تفهم الـ Context صح؟​

🎨 الوصول للـ Theme وحجم الشاشة​

لو محتاج:
  • لون الثيم
  • حجم الشاشة
  • اتجاه الجهاز
كل ده بيتم عن طريق context 👇
Code:
final width = MediaQuery.of(context).size.width;
final color = Theme.of(context).primaryColor;
من غير Context؟
Flutter مش هيعرف يسأل “الأب الكبير” 🧠


🧭 الـ Navigation بين الصفحات​

وأنت بتتنقل من شاشة للتانية، Flutter لازم يعرف إنت واقف فين حاليًا.
وده مش هيحصل غير بالـ Context 👇
Code:
Navigator.of(context).push(
  MaterialPageRoute(builder: (_) => DetailsPage()),
);
📌 من غير Context = مفيش تنقّل.


❌ أشهر خطأ: Context مش موجود​

الـ Error الشهير اللي كلنا شفناه 😅 Looking up a deactivated widget's ancestor
السبب غالبًا:
  • بتستخدم Context
  • قبل ما الـ Widget يتبني
  • أو بعد ما يتشال من الشجرة
يعني إنت بتنادي على عنوان بيت لسه متبناش 🏗️


⚠️ مثال على استخدام غلط للـ Context​

Java:
@override
void initState() {
  super.initState();
  Navigator.of(context).push(...); // ❌ غلط
}
ليه غلط؟
علشان الـ Context هنا لسه مش جاهز.


✅ الحل الصح​

استنى لما الـ Widget يتبني:
Java:
@override
void didChangeDependencies() {
  super.didChangeDependencies();
  // هنا context آمن
}
أو:
Code:
WidgetsBinding.instance.addPostFrameCallback((_) {
  Navigator.of(context).push(...);
});


🧠 الخلاصة اللي هتريح دماغك​

  • Context مش object عادي
  • Context = مكانك في شجرة الـ Widgets
  • أي طلب:
    • Theme
    • MediaQuery
    • Navigator
      محتاج Context صح وفي الوقت الصح
📌 الدرس المهم: قبل ما تطلب حاجة، اسأل نفسك: أنا واقف فين؟
البرمجة مش كود وبس… دي فهم وترتيب أفكار 👌
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
625
x32x01
x32x01
x32x01
الردود
0
المشاهدات
581
x32x01
x32x01
x32x01
الردود
0
المشاهدات
928
x32x01
x32x01
x32x01
الردود
0
المشاهدات
994
x32x01
x32x01
x32x01
الردود
0
المشاهدات
468
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,275
المشاركات
2,487
أعضاء أكتب كود
547
أخر عضو
exozonlyperson
عودة
أعلى