ناوبری 3

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

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

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

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

شیار

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

کاتلین

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

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

بازخورد

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

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

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

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

نسخه 1.0

نسخه 1.0.0-alpha11

08 اکتبر 2025

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

تغییرات API

  • متد calculateScene در SceneStrategy دیگر @Composable نیست. در عوض، این کار را به ساخت متد SceneStrategy خود (یعنی در متد rememberMySceneStrategy() ) در نظر بگیرید که به طور کامل به شما امکان می‌دهد طول عمر هر مقدار rememberSaveable یا عبارات remember کلید را از مقادیر صحیح تعریف کنید. ( If1733 , b/448709506 )
  • پارامتر onBack برای SceneStrategy.calculateScene به محدوده گیرنده جدید SceneStrategyScope منتقل شده است تا واضح تر شود که این یک پارامتر اختیاری است و یک نقطه گسترش برای ویژگی های Navigation3 آینده ارائه می دهد. ( I3aea3 , b/448460407 )
  • لامبدا 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 )
  • نمایشگرهای سفارشی که از SceneState به عنوان جایگزینی برای استفاده از NavDisplay استفاده می کنند، دیگر برای استفاده از ترکیب LocalEntriesToRenderInCurrentScene محلی، که اکنون داخلی است، لازم نیست. ( Ic40ef , b/414668196 )
  • SceneSetupNavEntryDecorator و rememberSceneSetupNavEntryDecorator() را از سطح API عمومی حذف کرد. این قابلیت اکنون به صورت پیش‌فرض بدون نیاز به اضافه کردن دستی آن درج شده است. ( Ieae42 , b/444479133 )
  • NavEntry ، DialogScene ، SinglePaneScene و SceneState اکنون همه برابر هستند. ( I96121 )
  • رابط صحنه دارای یک فیلد ابرداده جدید برای پیوست کردن ابرداده های خاص صحنه برای NavDisplay است. این به یک صحنه اجازه می دهد تا ابرداده را در NavDisplay ، به عنوان مثال با انتقال، لغو کند. ( I1fd96 , b/443955625 )
  • با حذف پارامتر نوع عمومی اضافی، امضای rememberNavBackStack را ساده کنید. تابع اکنون vararg elements: NavKey . ( I03e45 )
  • انیمیشن‌های پیش‌فرض NavDisplay اکنون بخشی از API مشترک هستند که به آن‌ها امکان فراخوانی از همه پلتفرم‌ها را می‌دهد. ( I71af9 , b/447147159 )
  • نام EntryProviderBuilder را به EntryProviderScope تغییر دهید تا به دقت نشان دهد که کلاس یک Kotlin DSL است که محدوده ای برای ساخت 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 حاوی این تعهدات است.

تغییرات 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 مراجعه کنید.