أخبار المنتجات

الإصدار 3 من Jetpack Navigation مستقر

قراءة لمدة 3 دقائق
Don Turner
مهندسة علاقات المطوّرين

أصبح الإصدار 1.0 من Jetpack Navigation 3 ثابتًا 🎉. يمكنك استخدامه في تطبيقاتك على الإصدار العلني اليوم. تستخدم شركة JetBrains هذه الميزة بالفعل في تطبيق KotlinConf.

‫Navigation 3 هي مكتبة تنقّل جديدة تم إنشاؤها من البداية للاستفادة من الحالة في Jetpack Compose. يمنحك تحكّمًا كاملاً في الأنشطة السابقة، ويساعدك في الاحتفاظ بحالة التنقّل، ويتيح لك إنشاء تخطيطات قابلة للتكيّف بسهولة (مثل عرض على شكل قائمة مع تفاصيل). تتوفّر أيضًا نسخة من عدّة منصات من JetBrains.

لماذا مكتبة جديدة؟

تم تصميم مكتبة Jetpack Navigation الأصلية (المعروفة الآن باسم Nav2) قبل 7 سنوات، وعلى الرغم من أنّها تخدم أهدافها الأصلية بشكل جيد وتم تحسينها بشكل متكرر، إلا أنّ طريقة إنشاء التطبيقات قد تغيّرت بشكل أساسي. 

أصبح الآن من الشائع استخدام البرمجة التفاعلية مع واجهة مستخدم تعريفية. تتّبع Nav3 هذا النهج. على سبيل المثال، تراقب NavDisplay (مكوّن واجهة المستخدم Nav3 الذي يعرض شاشاتك) ببساطة قائمة بالمفاتيح (يمثّل كل منها شاشة) تستند إلى حالة Compose وتعدّل واجهة المستخدم عند تغيُّر هذه القائمة.

nav-display.png

يمكن أن يصعّب Nav2 أيضًا الحصول على مصدر واحد للحقيقة لحالة التنقّل لأنّه يتضمّن حالته الداخلية الخاصة. باستخدام Nav3، يمكنك توفير حالتك الخاصة، ما يمنحك تحكّمًا كاملاً.

أخيرًا، طلبت المزيد من المرونة وإمكانية التخصيص. بدلاً من توفير واجهة برمجة تطبيقات واحدة ومتكاملة، يوفّر Nav3 واجهات برمجة تطبيقات أصغر ومنفصلة (أو "وحدات أساسية") يمكن دمجها معًا لإنشاء وظائف معقّدة. تستخدم Nav3 هذه الوحدات الأساسية لتوفير إعدادات تلقائية منطقية لحالات استخدام التنقّل المحدّدة جيدًا. 

يتيح لك هذا النهج ما يلي: 

يمكنك الاطّلاع على مزيد من المعلومات حول تصميمها وميزاتها في مدوّنة الإطلاق

نقل البيانات من Navigation 2

إذا كنت تستخدم Nav2 حاليًا، وتحديدًا Navigation Compose، عليك التفكير في نقل البيانات إلى Nav3. لمساعدتك في ذلك، يتوفّر دليل نقل البيانات. في ما يلي الخطوات الرئيسية: 

  1. أضِف اعتماديات Navigation 3.
  2. عدِّل مسارات التنقّل لتنفيذ NavKey. لا يجب أن تنفّذ مساراتك هذه الواجهة لاستخدام Nav3، ولكن في حال تنفيذها، يمكنك الاستفادة من وظيفة rememberNavBackStack في Nav3 لإنشاء سجلّ الأنشطة السابقة الدائم.
  3. أنشئ فئات لتخزين حالة التنقّل وتعديلها، وهي المكان الذي يتم فيه تخزين سجلّات الرجوع.
  4. استبدِل NavController بهذه الفئات.
  5. انقل وجهاتك من NavGraph في NavHost إلى entryProvider.
  6. استبدِل NavHost بـ NavDisplay.

تجربة نقل وكيل الذكاء الاصطناعي

يمكنك تجربة استخدام وكيل ذكاء اصطناعي لقراءة دليل النقل وتنفيذ الخطوات في مشروعك. لتجربة ذلك باستخدام ميزة Agent Mode ضمن "Gemini في استوديو Android"، اتّبِع الخطوات التالية:

  • احفظ نسخة Markdown من الدليل في مشروعك.
  • ألصِق هذا الطلب في الوكيل (ولكن لا تضغط على Enter): "نقل هذا المشروع إلى Navigation 3 باستخدام ".
  • اكتب ‎ @migration-guide.md، وسيوفّر ذلك الدليل كسياق للوكيل. 

وكالعادة، احرص على مراجعة التغييرات التي يجريها وكيل الذكاء الاصطناعي بعناية، فقد يرتكب أخطاء. 

يسرّنا معرفة رأيك في أدائك أو أداء وكيلك، لذا يُرجى إرسال ملاحظاتك هنا.

وصفات تنقّل لذيذة للسيناريوهات الشائعة

بالنسبة إلى حالات الاستخدام الشائعة ولكن الدقيقة، لدينا مستودع للوصفات. يوضّح هذا المثال كيفية دمج واجهات برمجة التطبيقات Nav3 بطريقة معيّنة، ما يتيح لك اختيار الوصفة أو تعديلها لتناسب احتياجاتك المحدّدة. إذا تبيّن أنّ إحدى الوصفات رائجة، سننظر في "نقل" الأجزاء غير الدقيقة منها إلى مكتبة Nav3 الأساسية أو مكتبات الوظائف الإضافية. 

code-recipes.png

تتوفّر حاليًا 19 وصفة، بما في ذلك: 

نعمل حاليًا على إعداد مسبق للروابط لصفحات معيّنة، بالإضافة إلى عملية دمج مع Koin، ولدينا الكثير من الإعدادات المسبقة الأخرى المخطّط لها. نشر مهندس من JetBrains أيضًا إصدارًا من الوصفات متوافقًا مع Compose Multiplatform.

إذا كان لديك حالة استخدام شائعة تريد الاطّلاع على وصفة لها، يُرجى تقديم طلب للحصول على وصفة

ملخّص

لبدء استخدام Nav3، اطّلِع على المستندات والوصفات. بالإضافة إلى ذلك، ترقبوا أسبوعًا كاملاً من المحتوى التقني، بما في ذلك: 

  • فيديو يتناول بالتفصيل واجهة برمجة التطبيقات ويشمل التجزئة والرسومات المتحركة والتنسيقات التكيّفية.
  • جلسة أسئلة وأجوبة مباشرة مع المهندسين الذين صمّموا Nav3

يبدأ أسبوع Nav3 Spotlight في 1 ديسمبر 2025. 


كالعادة، إذا واجهت أي مشاكل، يُرجى إبلاغنا بها هنا

تأليف:

متابعة القراءة