0%
تطبيق الطقس (واجهة Open-Meteo البرمجية) — الفصل 61

الفصل 61 — تطبيق الطقس (واجهة Open-Meteo)

الجزء 1C — ثمانية مشاريع مصغّرة · الفصل 61 من 62 · 14 ساعة

الفصل 61 — تطبيق الطقس (واجهة Open-Meteo)

المستوى: متوسط / متقدم المدة التقديرية: 14 ساعة المتطلبات المسبقة: الجزء 1A (الفصول من 01 إلى 18)، والجزء 1B (الفصول من 43 إلى 54)، والمشاريع من 55 إلى 60 ما ستتمكن من فعله في نهاية الفصل: ربط تطبيق Flutter بواجهة برمجية عامة حقيقية، ونمذجة استجابة JSON الخاصة بها، ومعالجة الحالات الثلاث لشاشة البيانات معالجةً سليمة، والصمود أمام انقطاع الشبكة بفضل ذاكرة تخزين مؤقت محلية، وتسليم واجهة يتغيّر مظهرها بحسب الطقس وبحسب الوقت من اليوم.


61.0 — أهداف الفصل

في نهاية هذا الفصل، ستكون قادرًا على:

  • قراءة وثائق واجهة برمجية حقيقية وبناء عنوان URL الدقيق الخاص بها؛
  • استخدام واجهة برمجية لا تتطلب مفتاح تسجيل، وبالتالي يمكن تشغيلها فورًا؛
  • تحويل ما يكتبه المستخدم إلى إحداثيات جغرافية عبر واجهة برمجية للترميز الجغرافي؛
  • نمذجة استجابة JSON معقدة في أربع فئات Dart (تذكير بالفصل 17)؛
  • فك ترميز بنية JSON «على شكل أعمدة»، وهي تختلف كثيرًا عن قائمة كائنات بسيطة؛
  • كتابة طبقة خدمة معزولة عن بقية التطبيق (تذكير بالفصل 53)؛
  • حقن http.Client لجعل هذه الطبقة قابلة للاختبار؛
  • تعريف استثناء خاص بالمجال الوظيفي مع enum للسبب (تذكير بالفصل 13)؛
  • التمييز بين عطل الشبكة، وتجاوز المهلة، وخطأ الخادم، والبيانات التالفة؛
  • التصريح بإذن الإنترنت على Android وعلى macOS؛
  • عرض الحالات الثلاث لشاشة البيانات باستخدام FutureBuilder؛
  • ترجمة رمز الطقس WMO إلى تسمية بالفرنسية وإلى أيقونة؛
  • رسم خلفية متدرجة الألوان تعتمد على الحالة الجوية وعلى وقت اليوم؛
  • بناء شريط للتوقعات الساعية باستخدام ListView أفقية (تذكير بالفصل 48)؛
  • بناء قائمة توقعات لسبعة أيام مع أشرطة لدرجات الحرارة؛
  • تنسيق التواريخ بالفرنسية باستخدام حزمة intl؛
  • كتابة شريط بحث مع debounce، لتجنب استعلام الواجهة البرمجية عند كل ضغطة مفتاح؛
  • حفظ سجل البحث وقائمة المدن المفضلة؛
  • جعل هذه المفضلات دائمة باستخدام shared_preferences (تذكير بالفصل 54)؛
  • تخزين آخر استجابة مؤقتًا لعرض شيء ما أثناء انقطاع الاتصال؛
  • التحديث بالسحب نحو الأسفل باستخدام RefreshIndicator؛
  • التبديل بين الدرجات المئوية والدرجات الفهرنهايتية؛
  • مركزة كل هذه الحالة في ChangeNotifier يعرضه provider (تذكير بالفصل 52)؛
  • اختبار طبقة الخدمة باستخدام استجابة JSON وهمية، دون لمس الشبكة إطلاقًا.

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!