ناوبری3
| آخرین بهروزرسانی | انتشار پایدار | کاندیدای انتشار | انتشار بتا | انتشار آلفا |
|---|---|---|---|---|
| ۲۲ اکتبر ۲۰۲۵ | - | - | ۱.۰.۰-بتا۰۱ | - |
اعلام وابستگیها
برای افزودن وابستگی به navigation3، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Google's Maven را مطالعه کنید.
وابستگیهای مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-beta01" implementation "androidx.navigation3:navigation3-ui:1.0.0-beta01" }
کاتلین
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-beta01") implementation("androidx.navigation3:navigation3-ui:1.0.0-beta01") }
برای اطلاعات بیشتر در مورد وابستگیها، به «افزودن وابستگیهای ساخت» مراجعه کنید.
بازخورد
بازخورد شما به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی کشف کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. میتوانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
هیچ یادداشت انتشاری برای این مصنوع وجود ندارد.
نسخه ۱.۰
نسخه ۱.۰.۰-بتا۰۱
۲۲ اکتبر ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 شامل این کامیتها است.
تغییرات API
-
SceneStrategyScopeاکنون فقط یک سازنده عمومی بدون آرگومان دارد که برای آزمایشSceneStrategyوSceneبرگشتی به صورت جداگانه مناسب است. برای موارد استفاده پیچیدهتر، لطفاً ازrememberSceneState()استفاده کنید. ( I8440c ، b/451679047 )
رفع اشکالات
- مشکل حلقه بینهایت هنگام زنجیرهسازی
SceneStrategyباthenبرطرف شد. ( Iba3f0 ، b/450323470 ) - لرزش صفحه هنگام تعویض
backStackارسالی بهNavDisplayو استفاده از انیمیشنها برطرف شد. ( Ief7b5 ، b/450967248 )
نسخه ۱.۰.۰-آلفا۱۱
۸ اکتبر ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha11 منتشر شد. نسخه 1.0.0-alpha11 شامل این کامیتها است.
تغییرات API
- متد
calculateSceneدرSceneStrategyدیگر@Composableنیست. در عوض، میتوانید این کار را به ساخت متدSceneStrategyخود (یعنی در یک متدrememberMySceneStrategy()) منتقل کنید که به شما امکان میدهد طول عمر هر مقدارrememberSaveableیا دستورات keyrememberرا از مقادیر صحیح تعریف کنید. ( If1733 , b/448709506 ) - پارامتر
onBackبرایSceneStrategy.calculateSceneبه محدوده گیرنده جدیدSceneStrategyScopeمنتقل شده است تا واضحتر شود که این یک پارامتر اختیاری است و یک نقطه گسترش برای ویژگیهای آینده Navigation3 فراهم میکند. ( I3aea3 ، b/448460407 ) - لامبدا
onBackکه بهNavDisplayوSceneStrategyشما ارسال میشود، دیگر پارامترcount: Intرا برای نشان دادن زمان نمایش چندین ورودی ارائه نمیدهد. در عوض، لامبدا() -> Unitاکنون چندین بار پشت سر هم در موارد نادری که Scene شما درخواست نمایش چندین ورودی را میدهد، فراخوانی میشود. ( Idedb5 ، b/446989346 ) - کلاس
NavEntryWrapperرا حذف کنید و عملکرد آن را با یک کلاسNavEntryنهایی با یک سازنده ثانویه جدید که یکNavEntryبا محتوای جدید میگیرد، جایگزین کنید. این کار امکان پشتیبانی مداوم از بستهبندی یک ورودی با محتوای جدید را فراهم میکند. ( I7da2a , b/444447130 ) - تابع
navEntryDecoratorکه یکNavEntryDecoratorایجاد و برمیگرداند، حذف شده و با کلاسNavEntryDecoratorجایگزین شده است که اکنون عمومی شده و برای زیرکلاسسازی باز است. ( If81f8 , b/444447434 , b/447381176 ) -
SavedStateNavEntryDecoratorبهSaveableStateHolderNavEntryDecoratorتغییر نام داده است، زیرا ورودیها را باSaveableStateHolderتزئین میکند. این دکوراتور همچنین از یک تابع به یک کلاس تغییر یافته است، زیرا از نظر عملکردی یک factory برایNavEntryDecoratorاست. ( Ie6013 ، b/447381176 ) - نمایشگرهای سفارشی که از
SceneStateبه عنوان جایگزینی برای استفاده ازNavDisplayاستفاده میکنند، دیگر نیازی به استفاده از ترکیبLocalEntriesToRenderInCurrentSceneمحلی ندارند، که اکنون داخلی است. ( Ic40ef ، b/414668196 ) -
SceneSetupNavEntryDecoratorوrememberSceneSetupNavEntryDecorator()از سطح API عمومی حذف شدند. این قابلیت اکنون به طور پیشفرض و بدون نیاز به وارد کردن دستی آن توسط شما، در دسترس است. ( Ieae42 , b/444479133 ) -
NavEntry،DialogScene،SinglePaneSceneوSceneStateاکنون همگی equals را پیادهسازی میکنند. ( I96121 ) - رابط صحنه یک فیلد فراداده جدید برای الصاق فرادادههای مختص صحنه به NavDisplay دارد. این به صحنه اجازه میدهد تا فرادادههای موجود در
NavDisplayرا نادیده بگیرد، برای مثال با انتقالها ( I1fd96 ، b/443955625 ). - با حذف پارامتر نوع عمومی زائد، امضای
rememberNavBackStackرا ساده کنید. این تابع اکنونvararg elements: NavKey. ( I03e45 ) - انیمیشنهای پیشفرض برای
NavDisplayاکنون بخشی از API مشترک هستند که به آنها اجازه میدهد از همه پلتفرمها فراخوانی شوند. ( I71af9 , b/447147159 ) - نام
EntryProviderBuilderرا بهEntryProviderScopeتغییر دهید تا دقیقاً نشان دهد که کلاس یک DSL کاتلین است که محدودهای برای ساختNavEntriesارائه میدهد. ( Ia7465 )
رفع اشکالات
-
rememberNavBackStack()اکنون سریالسازی چندریختی را برای NavKey اعمال میکند و به یکSavedStateConfigurationسفارشی نیاز دارد که برای اطمینان از بازیابی صحیح وضعیت پیکربندی شده باشد. KDoc بهروزرسانی شده است تا الزام ثبت تمام زیرگروههای NavKey در SerializersModule ارائه شده را منعکس کند. ( I6de37 ، I782f2 ، b/446664383 )
نسخه ۱.۰.۰-آلفا۱۰
۲۴ سپتامبر ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha10 منتشر شد. نسخه 1.0.0-alpha10 شامل این کامیتها است.
تغییرات API
- یک سربارگذاری جدید
NavDisplayاضافه کنید که لیستی ازNavEntry<T>که توسطrememberDecoratedNavEntriesتزئین شده است را دریافت کند. ( I4025b , b/441940314 ) -
DialogSceneبه یک بسته جدید منتقل شد. ( Ia5840 ) - API عمومی
DecorateNavEntryحذف کنید. در عوض ازrememberDecoratedNavEntriesبرای قرار دادن یک NavEntry با لیستی از دکوراتورها استفاده کنید. ( Id8c09 ) - رابط کاربری Navigation3 اکنون ویژگیهای پیشفرض جدید
transitionSpecارائه میدهد. ( Ibcabd ) - یک شیء
SceneStateجدید برای کمک به مدیریت صحنهها اضافه شد. این شیء همچنین یک سربارگذاری جدیدNavDisplayارائه میدهد کهSceneStateوNavigationEventStateدریافت میکند. ( Idfb46 ، b/444479133 ) -
NavDisplayاکنون به شما امکان میدهد تا با نگاه کردن بهcurrentStateوtargetStateمربوط بهTransition، انتقالها را بر اساسSceneکه به آن میروید و از آن خارج میشوید، سفارشی کنید. ( I906cc ، b/443872322 ) -
NavigationEventInfoاکنون به جای یکinterfaceیکabstract classاست. تمام پیادهسازیهای سفارشی را برای ارثبری از کلاس بهروزرسانی کنید (مثلاًdata class MyInfo : NavigationEventInfo()). ( I1e59c , b/444734264 ) - رابطهای برنامهنویسی (API) مربوط به مدیریتکنندهی
navigationevent-composeبهروزرسانی شدهاند.NavigationEventHandlerوNavigationBackHandler(و انواع دیگر) اکنون از یک overload جدید پشتیبانی میکنند که یکNavigationEventStateرا که به صورت hoist شده است، میپذیرد. overloadهای ساده (با گرفتنcurrentInfo) حفظ شده و اکنون از این مدل state جدید به صورت داخلی استفاده میکنند. ( Ic3251 ، b/444734264 ) - تمام APIهای صحنه از navigation3-ui به navigation3-runtime منتقل شدهاند. این بدان معناست که اکنون آنها در تمام پلتفرمهای پشتیبانی شده توسط navigation3-runtime در دسترس هستند. ( I431d0 ، b/444449993 )
- اضافه بار جدید
rememberDecoratedNavEntriesاضافه شد که لیستی ازNavEntryرا برای تزئین میگیرد. ورودیهای ورودی میتوانند از قبل با سایر دکوراتورهای ورودی تزئین شوند. ( I5a034 ، b/444230270 ) - پارامترهای نوع wildcard مربوط به navigation3 را حذف کنید ( I02540 )
- مدیریت ژنریکها برای
entryProviderDSL بهبود یافته است. اگر قبلاًandroidx.navigation3.runtime.entryرا وارد میکردید، دیگر نیازی به این کار نیست. ( I299fc ) - محدود کردن سربارگذاری
NavBackStackSerializerمبتنی بر بازتاب به اندروید. این کار با اعمال استفاده از سربارگذاری صریحSavedStateConfigurationدر کد چند پلتفرمی، از شکستهای سریالسازی ضمنی زمان اجرا در پلتفرمهای غیر اندروید جلوگیری میکند. ( I73313 ، b/420443609 ) -
swipeEdgeمربوط بهNavigationEventرا به یک@IntDefتبدیل کنید ( Icee54 , b/443950342 ) - سریالسازی
NavBackStackرا به اندروید محدود کنید. این کار از خطاهای زمان اجرا در پلتفرمهای غیر اندروید جلوگیری میکند. برای ذخیره وضعیت چند پلتفرمی، از overloadrememberNavBackStackبا یکSavedStateConfigurationصریح استفاده کنید. ( I1e418 , b/420443609 )
رفع اشکالات
- رفع مشکل از کار افتادن برنامه هنگام فراخوانی پیشبینانه، زمانی که
NavDisplayتو در تو دارای یک ورودی فرزند بود. ( I2cdc0 ، b/441933162 )
نسخه ۱.۰.۰-آلفا۰۹
۱۰ سپتامبر ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha09 منتشر شد. نسخه 1.0.0-alpha09 شامل این کامیتها است.
تغییرات API
-
DecoratedNavEntryProviderباrememberDecoratedNavEntriesجایگزین شده است که NavEntries را ایجاد کرده و با لیستی از دکوراتورهای ارائه شده ( 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 بستگی دارد.
نسخه ۱.۰.۰-آلفا۰۸
۲۷ آگوست ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha08 منتشر شد. نسخه 1.0.0-alpha08 شامل این کامیتها است.
ویژگیهای جدید
- اهداف جدید Kotlin MultiPlatform (KMP) به مصنوعات
Navigation3 Runtimeاضافه شد.Navigation3 Runtimeاکنون در مجموع از پلتفرمهای زیر پشتیبانی میکند: JVM (اندروید و دسکتاپ)، Native (لینوکس، iOS، watchOS، macOS، MinGW) و وب (جاوااسکریپت، WasmJS). ( I55078 ، b/424410398 ، b/419294028 ، b/419046226 ). توجه: این اهداف KMP را برای مصنوع رابطNavigation3 UIارائه نمیدهد. در سایر پلتفرمها، بایدNavDisplayسفارشی خود را پیادهسازی کنید. اگر مایل به پشتیبانی از آن هستید، لطفاً در اینجا به موضوع Jetbrains رأی دهید و پیشرفت پشتیبانی بیشتر را در آنجا پیگیری کنید. - شیء
NavDisplayInfoاکنون عمومی است و میتواند برای بازیابی لیست ورودیهای قابل مشاهده ازNavDisplayاستفاده شود. ( Ibc91f )
تغییرات API
- یک
NavBackStackSerializerجدید اضافه شده است تا در رابطه باrememberNavBackStackبرای انجام بازیابی وضعیت استفاده شود.rememberNavBackStack()اکنون یکSavedStateConfigurationنیز میگیرد که میتواند برای ارائه پیکربندی شخصی شما استفاده شود. ( I2f4d2 ، I4cd58 ، b/420443609 )
رفع اشکالات
- مشکلی که باعث میشد پیمایش باعث ایجاد رویدادهای نادرست چرخه عمر شود، برطرف شد. ( I8bf6d ، b/425901162 ، b/434109022 )
مشکلات شناخته شده
- یک اشکال توسط I8bf6d معرفی شده بود که باعث میشد Lifecycleها به جای ورودیهای منفرد، بر اساس صحنهها باشند، که این امر Lifecycle را برای هر موردی که
keyارائه شده بهNavEntryیکStringنیست یاNavEntryشماcontentKeyبازنویسی نکرده و آن را برابر باkeyقرار نداده است، از کار میانداخت (توجه داشته باشید که انجام این کار مستلزم آن است که کلید شما بتواند در یکBundleذخیره شود). این مشکل در نسخه بعدی برطرف شده است. ( b/440145700 )
نسخه ۱.۰.۰-آلفا۰۷
۱۳ آگوست ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha07 منتشر شد. نسخه 1.0.0-alpha07 شامل این کامیتها است.
بهروزرسانی MinSDK
- minSdk پیشفرض برای AndroidX از API 21 به API 23 منتقل شده است ( Ibdfca ، b/380448311 ، b/435705964 ، b/435705223 )
تغییرات API
-
SavedStateNavEntryDecoratorاکنون ازSaveableStateRegistryکه درSaveableStateProviderتعبیه شده است برای ذخیره و بازیابی حالتها استفاده میکند. ( If8d9a ) - ویژگی
predictivePopTransitionSpecاکنون لبهی سوایپ را به عنوان پارامتر ارائه میدهد و به شما امکان میدهد تا انتقال را بر اساس لبهای که کاربر حرکت Predictive Back را از آن شروع کرده است، سفارشی کنید. ( I753a8 )
رفع اشکالات
- مشکلی که باعث میشد صحنههای سفارشی بینهایت بار دوباره محاسبه شوند، برطرف شد، زیرا جدیدترین صحنه به خاطر سپرده نمیشد. ( I7ba84 ، b/418153031 )
بهروزرسانی وابستگی
- Navigation3 اکنون به رویداد Navigation
1.0.0-alpha06بستگی دارد.
نسخه ۱.۰.۰-alpha06
۳۰ ژوئیه ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha06 منتشر شد. نسخه 1.0.0-alpha06 شامل این کامیتها است.
بهروزرسانی وابستگی
- Navigation3 اکنون به رویداد Navigation
1.0.0-alpha05بستگی دارد.
نسخه ۱.۰.۰-آلفا۰۵
۲ ژوئیه ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 شامل این کامیتها است.
تغییرات رفتاری
- وضعیت
NavEntryاکنون کاملاً بر اساس لیست فعلی دکوراتورهای ارسالی بهNavDisplayاست. این بدان معناست که در صورت وجود چندین پشته پشتی، دکوراتورها باید در امتداد پشتههای پشتی شما جابجا شوند تا وضعیت NavEntries در پشته پشتی حفظ شود. در غیر این صورت، وضعیتها طوری پاک میشوند که انگار ورودیها برداشته شدهاند (به جای تعویض). ( I7a759 , b/428033667 )
نسخه ۱.۰.۰-آلفا۰۴
۱۸ ژوئن ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha04 منتشر شد. نسخه 1.0.0-alpha04 شامل این کامیتها است.
تغییرات API
-
NavEntry.contentاکنون خصوصی است. برای فراخوانی محتوایNavEntry، API جدیدNavEntry.Content()را فراخوانی کنید که دیگر نیازی به پارامترkeyبرای فراخوانی ندارد. ( Icd0fd , b/420991203 ) -
NavEntry.keyاکنون یک فیلد خصوصی است.NavEntryو حالتهای مرتبط با آن باید توسط فیلدcontentKeyجدید که از لامبداcontentKeyFactoryجدید تولید میشود، شناسایی شوند و پیشفرض آن یک هش قابل ذخیره تولید شده ازNavEntry.keyاست ( I81a6c ، b/422001357 ، b/420991203 I2d7d4 ، b/420991203 ، b/422841812 ).
تغییرات وابستگی
- Navigation3 اکنون به مصنوع جدید
androidx.navigationevent.composeبستگی دارد.
نسخه ۱.۰.۰-آلفا۰۳
۴ ژوئن ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha03 منتشر شد. نسخه 1.0.0-alpha03 شامل این کامیتها است.
رفع اشکالات
-
Navigation3دیگر حالتهای دکوراتور مربوط بهbackStacksکه حذف شده و با نمونهی دیگریbackStackجایگزین شدهاند را پاک نمیکند. ( I28a42 , b/415076044 )
نسخه ۱.۰.۰-آلفا۰۲
۲۳ مه ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha02 منتشر شد. نسخه 1.0.0-alpha02 شامل این کامیتها است.
رفع اشکالات
- مشکلی در
SavedStateNavEntryDecoratorکه باعث ایجاد تصادم برای کلاسهای داده مختلف با مقادیر ویژگی یکسان میشد، برطرف شد. ( b/418070648 , Iff4775 ) - مشکل فقدان کلاس که باعث خرابی هنگام اجرا بدون تعریف وابستگیهای صریح میشد، برطرف شد. ( b/419049149 , I4b4ed )
نسخه ۱.۰.۰-آلفا۰۱
۲۰ مه ۲۰۲۵
androidx.navigation3:navigation3-*:1.0.0-alpha01 منتشر شد. نسخه 1.0.0-alpha01 شامل این کامیتها است.
ویژگیهای جدید
Navigation3 یک کتابخانه ناوبری جدید است که به طور خاص برای مدیریت ناوبری درون برنامهای Jetpack Compose ساخته شده است. artifact مربوط به androidx.navigation3.runtime بلوکهای سازنده را فراهم میکند، در حالی که artifact مربوط به androidx.navigation3.ui لایه رابط کاربری را از طریق NavDisplay API فراهم میکند. توسعهدهندگان میتوانند وضعیت خود را مستقیماً به تابع قابل ترکیب 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 مراجعه کنید.