navigation3
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
8 أكتوبر 2025 | - | - | - | 1.0.0-alpha11 |
تحديد الاعتماديات
لإضافة اعتمادية على navigation3، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha11" implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11") implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
لا تتوفّر ملاحظات إصدار لهذا العنصر.
الإصدار 1.0
الإصدار 1.0.0-alpha11
8 أكتوبر 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha11
. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم تعُد الطريقة
calculateScene
علىSceneStrategy
@Composable
. بدلاً من ذلك، ننصحك بنقل هذا العمل إلى إنشاء طريقةSceneStrategy
(أي في طريقةrememberMySceneStrategy()
) التي تتيح لك بالكامل تحديد مدة صلاحية أي قيمrememberSaveable
أو عباراتremember
الرئيسية من القيم الصحيحة. (If1733، b/448709506) - تم نقل المَعلمة
onBack
الخاصة بـSceneStrategy.calculateScene
إلى نطاق المتلقّي الجديدSceneStrategyScope
لتوضيح أنّ هذه المَعلمة اختيارية وتوفير نقطة توسيع لميزات Navigation3 المستقبلية. (I3aea3، b/448460407) - لم يعُد تعبير lambda
onBack
الذي تم تمريره إلىNavDisplay
وإلىSceneStrategy
يوفّر المَعلمةcount: Int
للإشارة إلى الوقت الذي يجب فيه إزالة إدخالات متعددة. بدلاً من ذلك، سيتم الآن استدعاء دالة() -> Unit
lambda عدة مرات على التوالي في الحالة النادرة التي تطلب فيها "مشاهد" عرض إدخالات متعددة. (Idedb5، b/446989346) - أزِل الفئة
NavEntryWrapper
واستبدِل وظائفها بفئةNavEntry
نهائية تتضمّن منشئًا ثانويًا جديدًا يأخذNavEntry
مع محتوى جديد. سيسمح ذلك بمواصلة إتاحة إمكانية تضمين إدخال بمحتوى جديد. (I7da2a، b/444447130) - تمت إزالة الدالة
navEntryDecorator
التي تنشئ وتعرضNavEntryDecorator
واستبدالها بفئةNavEntryDecorator
التي أصبحت متاحة الآن للجميع ويمكن إنشاء فئات فرعية منها. (If81f8، b/444447434، b/447381176) - تمت إعادة تسمية
SavedStateNavEntryDecorator
إلىSaveableStateHolderNavEntryDecorator
لأنّها تزين الإدخالات باستخدامSaveableStateHolder
. تمت إعادة تصميم أداة التزيين أيضًا من دالة إلى فئة لأنّها تعمل وظيفيًا كمصنع لـNavEntryDecorator
. (Ie6013، b/447381176) - لم يعُد مطلوبًا استخدام
LocalEntriesToRenderInCurrentScene
composition local في العروض المخصّصة التي تستخدمSceneState
كبديل لاستخدامNavDisplay
، لأنّها أصبحت الآن داخلية. (Ic40ef، b/414668196) - تمت إزالة
SceneSetupNavEntryDecorator
وrememberSceneSetupNavEntryDecorator()
من مساحة واجهة برمجة التطبيقات العامة. يتم الآن تضمين هذه الوظيفة تلقائيًا بدون الحاجة إلى تضمينها يدويًا. (Ieae42، b/444479133) - تتضمّن الآن جميع الفئات
NavEntry
وDialogScene
وSinglePaneScene
وSceneState
الدالة equals. (I96121) - تتضمّن واجهة المشهد حقل بيانات وصفية جديدًا لإرفاق بيانات وصفية خاصة بالمشهد في NavDisplay. يسمح ذلك لـ "مشهد" بتجاوز البيانات الوصفية في
NavDisplay
، على سبيل المثال باستخدام انتقالات. (I1fd96، b/443955625) - بسِّط توقيع
rememberNavBackStack
عن طريق إزالة مَعلمة النوع العام المكرّرة. تقبل الدالة الآنvararg elements: NavKey
. (I03e45) - أصبحت الرسوم المتحركة التلقائية في
NavDisplay
جزءًا من واجهة برمجة التطبيقات الشائعة التي تتيح استدعاءها من جميع المنصات. (I71af9، b/447147159) - أعِد تسمية
EntryProviderBuilder
إلىEntryProviderScope
لتعكس بدقة أنّ الفئة هي لغة Kotlin خاصة بالمجال توفّر نطاقًا لإنشاءNavEntries
. (Ia7465)
إصلاح الأخطاء
- تفرض السمة
rememberNavBackStack()
الآن التسلسل المتعدّد الأشكال لـ NavKey وتتطلّب السمةSavedStateConfiguration
مخصّصة يتم إعدادها لضمان استعادة الحالة بشكلٍ صحيح. تم تعديل KDoc لتعكس شرط تسجيل جميع الأنواع الفرعية من NavKey في SerializersModule المقدَّمة. (I6de37 وI782f2 وb/446664383)
الإصدار 1.0.0-alpha10
24 سبتمبر 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha10
. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أضِف حمولة زائدة جديدة
NavDisplay
تأخذ قائمةNavEntry<T>
تم تزيينها بواسطةrememberDecoratedNavEntries
. (I4025b، b/441940314) - تم نقل
DialogScene
إلى حزمة جديدة. (Ia5840) - إزالة واجهة برمجة التطبيقات العامة
DecorateNavEntry
بدلاً من ذلك، استخدِمrememberDecoratedNavEntries
لتضمين NavEntry مع قائمة من أدوات التزيين. (Id8c09) - توفّر واجهة مستخدم Navigation3 الآن خصائص
transitionSpec
تلقائية جديدة. (Ibcabd) - تمت إضافة عنصر
SceneState
جديد للمساعدة في إدارة المشاهد. يوفّر ذلك أيضًا عملية تحميل زائدة جديدةNavDisplay
تأخذSceneState
وNavigationEventState
. (Idfb46، b/444479133) - تتيح لك
NavDisplay
الآن تخصيص عمليات الانتقال استنادًا إلىScene
التي ستنتقل إليها أو منها من خلال النظر إلىcurrentState
وtargetState
فيTransition
. (I906cc، b/443872322) - أصبح
NavigationEventInfo
الآنabstract class
بدلاً منinterface
. عدِّل جميع عمليات التنفيذ المخصّصة لتتضمّن الفئة (مثلdata class MyInfo : NavigationEventInfo()
). (I1e59c، b/444734264) - تم تعديل واجهات برمجة التطبيقات لمعالج
navigationevent-compose
. يتوافق النوعانNavigationEventHandler
وNavigationBackHandler
(والأنواع الفرعية) الآن مع تحميل زائد جديد يقبلNavigationEventState
s تم نقلها إلى الأعلى. يتم الاحتفاظ بعمليات التحميل الزائد البسيطة (التي تتضمّنcurrentInfo
) وتستخدم الآن نموذج الحالة الجديد هذا داخليًا. (Ic3251، b/444734264) - تم نقل جميع واجهات برمجة التطبيقات الخاصة بالمشاهد من navigation3-ui إلى navigation3-runtime. وهذا يعني أنّها أصبحت متاحة الآن على جميع المنصات المتوافقة مع navigation3-runtime. (I431d0، b/444449993)
- تمت إضافة حمولة زائدة جديدة
rememberDecoratedNavEntries
تأخذ قائمةNavEntry
لتزيينها. يمكن أن تكون إدخالات الإدخال مزيّنة مسبقًا بمزيّنات إدخال أخرى. (I5a034، b/444230270) - إزالة مَعلمات نوع حرف البدل navigation3 (I02540)
- تم تحسين التعامل مع الأنواع العامة للغة
entryProvider
الخاصة بالمجال. إذا كنت تستوردandroidx.navigation3.runtime.entry
في السابق، لم يعُد ذلك مطلوبًا. (I299fc) - يجب حصر التحميل الزائد
NavBackStackSerializer
المستند إلى الانعكاس على Android. يمنع ذلك حدوث أخطاء تسلسلية ضمنية في وقت التشغيل على الأنظمة الأساسية غير Android من خلال فرض استخدام التحميل الزائد الصريحSavedStateConfiguration
في الرمز البرمجي المتوافق مع عدة أنظمة أساسية. (I73313، b/420443609) - اجعل
NavigationEvent
swipeEdge
@IntDef
(Icee54، b/443950342) - يجب حصر عملية تسلسل
NavBackStack
على Android. يمنع ذلك حدوث أخطاء في وقت التشغيل على المنصات غير التابعة لنظام التشغيل Android. لحفظ الحالة على منصات متعددة، استخدِم عملية التحميل الزائدrememberNavBackStack
معSavedStateConfiguration
صريح. (I1e418، b/420443609)
إصلاح الأخطاء
- إصلاح عُطل أثناء استخدام ميزة "الرجوع التوقّعي" عندما يحتوي العنصر
NavDisplay
المتداخل على إدخال ثانوي واحد. (I2cdc0، b/441933162)
الإصدار 1.0.0-alpha09
10 سبتمبر 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha09
. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم استبدال
DecoratedNavEntryProvider
بـrememberDecoratedNavEntries
الذي ينشئ NavEntry ويعرضه مع قائمة أدوات التزيين المتوفّرة (I0fe1c، b/441328236) - أصبح
NavBackStack
الآن عامًا على مستوى النوعNavKey
. يتيح ذلك للتطبيقات والمكتبات تحديد أنواع مفاتيح مخصّصة لمكدّسات الرجوع، بدلاً من الاقتصار علىNavKey
. (I4d190 وIad2f4 وb/420443609) - أصبح
NavBackStack
الآن@kotlinx.serialization.Serializable
، ما يتيح حفظ حالة التنقّل واستعادتها عند إيقاف العملية وتغيير الإعدادات بدون الحاجة إلى كتابة المزيد من الرموز النموذجية. (I2c3cf، b/420443609) - تم نقل
RememberNavBackStack
إلىcommonMain
لضمان توفيره على جميع المنصات المستهدَفة. (Id69e7، b/420443609)
إصلاح الأخطاء
- ينقل
NavDisplay
الآن كلNavEntry
على حدة إلىLifecycle.State
الصحيح. (I30aac، b/440145700) - تم إصلاح مشكلة كانت تتجاهل فيها
NavDisplay
أيNavigationEventDispatcherOwner
متداخل تم ضبطه من خلالLocalNavigationEventDispatcherOwner
في مكتبةNavigationEvent
. (I6224a)
تغييرات الاعتماديات
- تعتمد Navigation3 الآن على NavigationEvent Alpha08.
الإصدار 1.0.0-alpha08
27 أغسطس 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha08
. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
الميزات الجديدة
- تمّت إضافة أهداف جديدة من Kotlin MultiPlatform (KMP) إلى عناصر
Navigation3 Runtime
. يتوافقNavigation3 Runtime
الآن مع الأنظمة الأساسية التالية بشكلٍ كامل: JVM (Android وDesktop)، وNative (Linux وiOS وwatchOS وmacOS وMinGW)، والويب (JavaScript وWasmJS). (I55078، b/424410398، b/419294028، b/419046226). ملاحظة: لا يوفّر ذلك استهدافات KMP لعنصرNavigation3 UI
. على الأنظمة الأساسية الأخرى، عليك تنفيذNavDisplay
مخصّص خاص بك. إذا أردت أن تصبح هذه الميزة متاحة، يُرجى التصويت على المشكلة في Jetbrains هنا ومتابعة حالة الطلب للحصول على دعم إضافي. - أصبح الكائن
NavDisplayInfo
الآن متاحًا للجميع ويمكن استخدامه لاسترداد قائمة الإدخالات المرئية منNavDisplay
. (Ibc91f)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
NavBackStackSerializer
جديد لاستخدامه معrememberNavBackStack
لتنفيذ عملية استعادة الحالة. يتلقّىrememberNavBackStack()
الآن أيضًاSavedStateConfiguration
يمكن استخدامه لتقديم الإعدادات الخاصة بك. (I2f4d2 وI4cd58 وb/420443609)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبب في تشغيل أحداث Lifecycle غير صحيحة عند التنقّل. (I8bf6d، b/425901162، b/434109022)
المشاكل المعروفة
- حدث خطأ بسبب I8bf6d جعل دورات الحياة تستند إلى المشاهد بدلاً من الإدخالات الفردية، ما أدّى إلى تعطيل دورة الحياة في أي حالات لم يكن فيها
key
المقدَّم إلىNavEntry
هوString
أو لم يتجاوزNavEntry
قيمةcontentKey
وضبطها على قيمةkey
(يُرجى العِلم أنّ إجراء ذلك يفرض إمكانية حفظ المفتاح فيBundle
). وقد تم إصلاح هذا الخطأ في الإصدار التالي. (b/440145700)
الإصدار 1.0.0-alpha07
13 أغسطس 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha07
. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
تعديل MinSdk
- تم نقل الحد الأدنى التلقائي لـ minSdk في AndroidX من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 لواجهة برمجة التطبيقات (Ibdfca وb/380448311 وb/435705964 وb/435705223).
تغييرات واجهة برمجة التطبيقات
- تستخدم
SavedStateNavEntryDecorator
الآنSaveableStateRegistry
المضمّنة فيSaveableStateProvider
لحفظ الحالات واستعادتها. (If8d9a) - يتم الآن توفير
predictivePopTransitionSpec
كمعلَمة لحافة التمرير السريع، ما يتيح لك تخصيص الانتقال استنادًا إلى الحافة التي بدأ منها المستخدم إيماءة "الرجوع التوقّعي". (I753a8)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إعادة احتساب المشاهد المخصّصة إلى ما لا نهاية لأنّه لم يتم تذكُّر المشهد الأخير. (I7ba84، b/418153031)
تحديث الاعتماديات
- تعتمد Navigation3 الآن على حدث التنقّل
1.0.0-alpha06
.
الإصدار 1.0.0-alpha06
30 يوليو 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha06
. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
تحديث الاعتماديات
- تعتمد Navigation3 الآن على حدث التنقّل
1.0.0-alpha05
.
الإصدار 1.0.0-alpha05
2 يوليو 2022
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha05
. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
التغييرات في السلوك
- تستند حالة
NavEntry
الآن بشكل صارم إلى قائمة أدوات التزيين الحالية التي تم تمريرها إلىNavDisplay
. وهذا يعني أنّه يجب تبديل أدوات التزيين على طول حِزم الخلفية في حال توفّر حِزم خلفية متعددة من أجل الحفاظ على حالة NavEntry في حزمة الخلفية. وفي حال عدم توفّرها، ستتم إزالة الحالات كما لو تم إيقاف الإدخالات (بدلاً من التبديل). (I7a759، b/428033667)
الإصدار 1.0.0-alpha04
18 يونيو 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha04
. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
NavEntry.content
خاصة الآن. لاستدعاء محتوىNavEntry
، استخدِم واجهة برمجة التطبيقات الجديدةNavEntry.Content()
التي لم تعُد تتطلّب المَعلمةkey
لاستدعائها. (Icd0fd، b/420991203)- أصبح
NavEntry.key
الآن حقلًا خاصًا. يجب تحديدNavEntry
والحالات ذات الصلة من خلال الحقل الجديدcontentKey
الذي يتم إنشاؤه من تعبير lambda الجديدcontentKeyFactory
ويتم ضبطه تلقائيًا على قيمة تجزئة قابلة للحفظ يتم إنشاؤها منNavEntry.key
(I81a6c وb/422001357 وb/420991203 وI2d7d4 وb/420991203 وb/422841812).
تغييرات الاعتماديات
- تعتمد Navigation3 الآن على العنصر الجديد
androidx.navigationevent.compose
.
الإصدار 1.0.0-alpha03
4 يونيو 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha03
. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- لن يمحو
Navigation3
حالات أداة الزخرفة للعناصرbackStacks
التي تم استبدالها بنسخة أخرى منbackStack
. (I28a42، b/415076044)
الإصدار 1.0.0-alpha02
23 مايو 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha02
. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في
SavedStateNavEntryDecorator
تسبّبت في حدوث تعارضات لفئات بيانات مختلفة لها قيم السمات نفسها. (b/418070648، Iff4775) - تم إصلاح مشكلة عدم توفّر فئة كانت تتسبّب في حدوث أعطال عند التشغيل بدون تحديد التبعيات بشكل صريح. (b/419049149, I4b4ed)
الإصدار 1.0.0-alpha01
20 مايو 2025
تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha01
. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الميزات الجديدة
Navigation3 هي مكتبة تنقّل جديدة مصمَّمة خصيصًا للتعامل مع التنقّل داخل التطبيقات المطوَّرة بواسطة Jetpack Compose. يوفر العنصر androidx.navigation3.runtime
اللبنات الأساسية، بينما يوفّر العنصر androidx.navigation3.ui
طبقة واجهة المستخدم من خلال واجهة برمجة التطبيقات NavDisplay
. يمكن للمطوّرين تقديم حالتهم الخاصة مباشرةً إلى الدالة القابلة للإنشاء NavDisplay
، ما يؤدي إلى تغيير المحتوى استنادًا إلى التغييرات في حالة المطوّر.
@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey
val backStack = rememberNavBackStack(Home)
NavDisplay(backStack, entryProvider = entryProvider {
entry<Home> {
Column {
Text(“Home”)
Button(onClick = { backStack.add(Chat) } ) {
Text(“Go to Chat”)
}
}
}
entry<Chat> { /* My Composable Content */ }
})
لمزيد من المعلومات، يمكنك الاطّلاع على دليل Navigation3.