ناوبری 3

Navigation 3 یک کتابخانه ناوبری جدید است که برای کار با Compose طراحی شده است.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
24 سپتامبر 2025 - - - 1.0.0-آلفا10

اعلام وابستگی ها

برای افزودن وابستگی به navigation3، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.

وابستگی‌های مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha10"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha10"
}

کاتلین

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha10")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha10")
}

برای اطلاعات بیشتر درباره وابستگی‌ها، به افزودن وابستگی‌های ساخت نگاه کنید.

بازخورد

بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.

یک شماره جدید ایجاد کنید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

هیچ یادداشت انتشار برای این مصنوع وجود ندارد.

نسخه 1.0

نسخه 1.0.0-alpha10

24 سپتامبر 2025

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 (و انواع مختلف) اکنون از اضافه‌بار جدیدی پشتیبانی می‌کنند که NavigationEventState را می‌پذیرد. اضافه بارهای ساده (دریافت currentInfo ) حفظ می شوند و اکنون از این مدل حالت جدید به صورت داخلی استفاده می کنند. ( IC3251 , b/444734264 )
  • همه Scene API ها از navigation3-ui به navigation3-runtime منتقل شده اند. این بدان معنی است که آنها اکنون در تمام سیستم عامل های پشتیبانی شده توسط navigation3-runtime در دسترس هستند. ( I431d0 , b/444449993 )
  • اضافه بار جدید rememberDecoratedNavEntries که فهرستی از NavEntry را برای تزئین می گیرد. ورودی های ورودی را می توان از قبل با تزئینات ورودی دیگر تزئین کرد. ( I5a034 , b/444230270 )
  • حذف پارامترهای نوع عام navigation3 ( I02540 )
  • بهبود مدیریت ژنریک برای DSL entryProvider . اگر قبلا androidx.navigation3.runtime.entry را وارد می کردید، دیگر نیازی به این کار نیست. ( I299fc )
  • اضافه بار NavBackStackSerializer مبتنی بر بازتاب را به Android محدود کنید. این امر با اعمال استفاده از اضافه بار صریح SavedStateConfiguration در کدهای چندپلتفرمی، از شکست‌های سریال‌سازی زمان اجرا ضمنی در پلتفرم‌های غیر اندرویدی جلوگیری می‌کند. ( I73313 , b/420443609 )
  • swipeEdge NavigationEvent را به @IntDef تبدیل کنید ( Icee54 , b/443950342 )
  • سریال سازی NavBackStack را به اندروید محدود کنید. این از خرابی زمان اجرا در سیستم عامل های غیر اندرویدی جلوگیری می کند. برای ذخیره حالت چندپلتفرمی، از اضافه بار 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 حاوی این تعهدات است.

تغییرات 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 )

تغییرات وابستگی

نسخه 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 (اندروید و دسکتاپ)، Native (Linux، iOS، watchOS، macOS، MinGW) و وب (JavaScript، 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 معرفی شد که باعث شد چرخه‌های زندگی به جای ورودی‌های فردی بر اساس صحنه‌ها باشد، که چرخه حیات را برای هر مواردی که key ارائه‌شده به NavEntry یک String نیست یا NavEntry شما contentKey لغو نکرده و آن را برابر با key قرار نداده است، شکسته می‌شود (توجه داشته باشید که انجام این کار باعث می‌شود که کلید B در Bundle ذخیره شود). این برای نسخه بعدی رفع شده است. ( b/440145700 )

نسخه 1.0.0-alpha07

13 آگوست 2025

androidx.navigation3:navigation3-*:1.0.0-alpha07 منتشر شد. نسخه 1.0.0-alpha07 حاوی این commit ها است.

به روز رسانی MinSdk

تغییرات API

  • SavedStateNavEntryDecorator اکنون از SaveableStateRegistry ساخته شده در SaveableStateProvider برای ذخیره و بازیابی حالت ها استفاده می کند. ( If8d9a )
  • predictivePopTransitionSpec اکنون لبه کشیدن انگشت را به عنوان یک پارامتر ارائه می‌کند و به شما این امکان را می‌دهد تا انتقال را بر اساس اینکه کاربر از چه لبه‌ای ژست Predictive Back را شروع کرده است، سفارشی کنید. ( I753a8 )

رفع اشکال

  • مشکلی را برطرف کرد که باعث می‌شد صحنه‌های سفارشی بی‌نهایت دوباره محاسبه شوند، زیرا آخرین صحنه به خاطر نمی‌ماند. ( I7ba84 , b/418153031 )

به روز رسانی وابستگی

نسخه 1.0.0-alpha06

30 جولای 2025

androidx.navigation3:navigation3-*:1.0.0-alpha06 منتشر شد. نسخه 1.0.0-alpha06 حاوی این تعهدات است.

به روز رسانی وابستگی

نسخه 1.0.0-alpha05

2 ژوئیه 2025

androidx.navigation3:navigation3-*:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 حاوی این تعهدات است.

تغییرات رفتار

  • وضعیت NavEntry اکنون کاملاً بر اساس لیست فعلی تزئینات ارسال شده به NavDisplay است. این بدان معنی است که دکوراتورها باید در امتداد پشته های پشتی شما در صورت وجود پشته های پشتی متعدد تعویض شوند تا وضعیت NavEntries در پشته پشتی حفظ شود. در غیر این صورت، حالت ها به گونه ای پاک می شوند که گویی ورودی ها ظاهر شده اند (به جای تعویض). ( I7a759 , b/428033667 )

نسخه 1.0.0-alpha04

18 ژوئن 2025

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, b/420991203, b1d7403 , b/420991203, b/2d744) شناسایی شوند. 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 , If4775 )
  • مشکل کلاس از دست رفته را که در هنگام اجرا بدون اعلام وابستگی های صریح باعث خرابی می شد، برطرف شد. ( 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 لایه UI را از طریق NavDisplay API فراهم می کند. توسعه‌دهندگان می‌توانند وضعیت خود را مستقیماً به تابع composable 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 مراجعه کنید.