رویداد ناوبری
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
30 جولای 2025 | - | - | - | 1.0.0-alpha05 |
اعلام وابستگی ها
برای افزودن یک وابستگی به navigationevent، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha05" }
کاتلین
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha05") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
هیچ یادداشت انتشار برای این مصنوع وجود ندارد.
نسخه 1.0
نسخه 1.0.0-alpha05
30 جولای 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05
منتشر شد. نسخه 1.0.0-alpha05 حاوی این تعهدات است.
پشتیبانی سلسله مراتبی والدین-فرزند:
یک NavigationEventDispatcher
اکنون می تواند توزیع کننده های والد و فرزند داشته باشد که یک ساختار درختی سلسله مراتبی را تشکیل می دهد. این امر به رویدادهای ناوبری امکان می دهد تا با منعکس کردن سلسله مراتب ساختاری UI از طریق توزیع کننده های زنجیره ای، در اجزای پیچیده Compose UI به طور انعطاف پذیرتری منتشر شوند و مدیریت شوند. ( I194ac )
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
ویژگی سلسله مراتبی isEnabled
امکان کنترل از بالا به پایین توزیع کننده را فراهم می کند. هنگامی که isEnabled
در یک توزیع کننده روی false
تنظیم شود، به طور خودکار همه توزیع کننده های نسل خود را غیرفعال می کند. این ویژگی باعث می شود تا کل شاخه های سیستم رویداد ناوبری به طور موثر خاموش شوند. ( I9e985 )
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
علاوه بر این، ویژگی isEnabled
در NavigationEventCallback
اکنون به وضعیت فعال توزیع کننده مرتبط خود احترام می گذارد. این بدان معنی است که یک تماس پاسخ تنها در صورتی فعال در نظر گرفته می شود که هم خود تماس و هم ارسال کننده آن (از جمله اجداد آن) فعال باشند و از کنترل سلسله مراتبی مداوم بر فعال سازی برگشت به تماس اطمینان حاصل شود. ( I1799a )
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
یک روش جدید dispose()
برای پاکسازی مناسب توزیع کنندگان و فرزندانشان معرفی شده است. فراخوانی dispose()
شنوندگان را برای جلوگیری از نشت حافظه متوقف میکند، به صورت بازگشتی همه ارسالکنندههای فرزند را از بین میبرد، همه تماسهای برگشتی ثبتشده برای توزیعکننده را حذف میکند و آن را از والد خود جدا میکند. این تضمین می کند که منابع به درستی در زمانی که دیگر نیازی به توزیع کننده نیست آزاد شوند. ( I9e985 )
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
اگر هر روش عمومی در یک توزیع کننده دفع شده فراخوانی شود، یک IllegalStateException
بلافاصله پرتاب می شود. این از خرابی های بی صدا جلوگیری می کند و به توسعه دهندگان کمک می کند تا استفاده نادرست را در طول توسعه شناسایی کنند. ( IC2dc3 )
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
توجه: ما یک NavigationEventDispatcherOwner
Composable جدید معرفی خواهیم کرد که به طور خودکار یک توزیع کننده فرزند را در Compose UI در aosp/3692572 مدیریت می کند. با این حال، این تغییر به نسخه فعلی وارد نشد و برای نسخه بعدی برنامه ریزی شده است.
کتابخانه تست ناوبری
- ماژول
navigationevent-testing
را برای ارائه ابزارهای آزمایشی اختصاصی برای کتابخانهnavigationevent
اضافه کنید. ( 0e50b6 ) - کلاس ابزار جعلی
TestNavigationEventCallback
برای آزمایش اضافه کنید. تماسهای روش برگشت به تماس را ضبط میکند و موارد دریافتیNavigationEvent
را برای پشتیبانی از تأیید ذخیره میکند. ( 4a0246 ) - برای ایجاد نمونههای
NavigationEvent
با مقادیر پیشفرض، تابع ابزار جعلیTestNavigationEvent
را اضافه کنید و آزمایشهای واحد را برای پردازش رویدادهای ناوبری ساده کنید. ( 3b63f5 ) - کلاس ابزار جعلی
TestNavigationEventDispatcherOwner
برای آزمایش اضافه کنید. برای پشتیبانی از تأیید تعامل در آزمایشها، تعداد رویدادهای بازگشتی و تغییر حالت فعال را دنبال میکند. ( c8753e )
تغییرات API
-
NavigationEventInputHandler
ازandroidMain
بهcommonMain
منتقل کنید تا در کد رایج KMP در دسترس قرار گیرد. روشهایpublic send*
جدید را برای ارسال رویدادها اضافه کنید. تغییر توابع ارسال درNavigationEventDispatcher
ازpublic
بهinternal
. کاربران اکنون باید ازNavigationEventInputHandler
برای ارسال رویدادها استفاده کنند. ( Ia7114 ) - تغییر نام
NavigationInputHandler
بهOnBackInvokedInputHandler
. ( I63405 )
رفع اشکال
- Refactor
NavigationEventDispatcher
برای کاهش سربار با اجتناب از تخصیص لیست میانی و بهبود عملکرد ارسال برگشت به تماس. ( I82702 , I1a9d9 ) - حاشیهنویسیهای
@FloatRange
را به فیلدهایtouchX
،touchY
وprogress
درNavigationEvent
اضافه کنید تا محدودههای ارزش معتبر را در زمان کامپایل اعمال کنید و ایمنی API را بهبود بخشید. ( Iac0ec )
نسخه 1.0.0-alpha04
2 ژوئیه 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04
منتشر شد. نسخه 1.0.0-alpha04 حاوی این تعهدات است.
رفع اشکال
- از
implementedInJetBrainsFork
برایnavigationevent-compose
استفاده کرد و یک هدفcommonStubs
برای مطابقت با قراردادهای Compose اضافه کرد. تغییر درخواست شده توسط JetBrains . ( f60c79 ) - رفع مشکل پلاگین کامپایلر Compose برای Kotlin/Native برای اطمینان از تولید صحیح خرد. هیچ تاثیری بر APIهای عمومی یا رفتار ندارد. ( 1890c9 )
نسخه 1.0.0-alpha03
18 ژوئن 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03
منتشر شد. نسخه 1.0.0-alpha03 حاوی این تعهدات است.
ویژگی های جدید
- یک ماژول جدید
navigationevent-compose
برای پشتیبانی از ویژگی های Jetpack Compose در کتابخانهnavigationevent
معرفی کرد. ( 980d78 ) -
NavigationEvent
Compose یک ترکیب محلیLocalNavigationEventDispatcherOwner
جدید اضافه کرده است. برای تعیین بهتر اینکه آیا در ترکیب فعلی موجود است یا خیر، یک مقدار nullable برمی گرداند. اکنون اگر مالک اصلی پیدا نشود،NavigationEventHandler
خطایی ایجاد می کند. ( 62ffda ) -
NavigationEvent
Compose یکNavigationEventHandler
Composable جدید اضافه کرده است تا رویدادها را مدیریت کند. این یکFlow
از اشیاءNavigationEvent
ارائه می دهد که باید در لامبدای معلقی که ارائه می کنید c42ba6 جمع آوری شوند:
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
تغییرات API
- هر
NavigationEventCallback
اکنون می تواند تنها با یکNavigationEventDispatcher
در یک زمان ثبت شود. افزودن آن به چندین توزیع کننده، یکIllegalStateException
ایجاد می کند. توجه داشته باشید که این رفتار باOnBackPressedDispatcher
متفاوت است، که به چندین توزیع کننده اجازه می دهد. ( e82c19 ) -
isPassThrough
یکval
برای جلوگیری از جهش در طول ناوبری ساخته شده است که می تواند ارسالNavigationEvent
را خراب کند. ( I0b287 )
نسخه 1.0.0-alpha02
4 ژوئن 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02
منتشر شد. نسخه 1.0.0-alpha02 حاوی این تعهدات است.
تغییرات API
- سازنده ثانویه
NavigationEventDispatcher
با آرگومان های پیش فرض جایگزین کنید. ( I716a0 ) - ویژگی اولویت را از
NavigationEventCallback
حذف کنید. در عوض اولویت را بهNavigationEventDispatcher.addCallback()
بدهید. ( I13cae )
رفع اشکال
- یک
ConcurrentModificationException
که میتوانست هنگام فراخوانیNavigationEventCallback.remove()
رخ دهد، به دلیل تغییر همزمان فهرست داخلی موارد بسته، برطرف کرد. ( b/420919815 )
نسخه 1.0.0-alpha01
20 مه 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01
منتشر شد. نسخه 1.0.0-alpha01 حاوی این تعهدات است.
ویژگی های جدید
- کتابخانه
androidx.navigationevent
یک KMP-first API برای کنترل سیستم و همچنین Predictive Back ارائه میکند.NavigationEventDispatcher
به عنوان یک API رایج برای ثبت یک یا چند نمونهNavigationEventCallback
برای دریافت رویدادهای برگشت سیستم عمل می کند. - این لایه در زیر APIهای منتشر شده قبلی در
androidx.activity
قرار دارد و هدف آن این است که جایگزینی با نظر کمتر برای استفاده از APIهای Activity در اجزای سطح بالاتر یا استفاده مستقیم از چارچوب AndroidOnBackInvokedDispatcher
APIها باشد. APIهایandroidx.activity
در بالای APIهای رویداد ناوبری به عنوان بخشی از Activity 1.12.0-alpha01 بازنویسی شدهاند.