ناوبری3

Navigation 3 یک کتابخانه ناوبری جدید است که برای کار با Compose طراحی شده است.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۲۳ سپتامبر ۲۰۲۶ ۱.۲.۰ - - ۱.۳.۰-آلفا۰۱

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

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

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

شیک

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.3.0-alpha02"
    implementation "androidx.navigation3:navigation3-ui:1.3.0-alpha02"
}

کاتلین

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.3.0-alpha02")
    implementation("androidx.navigation3:navigation3-ui:1.3.0-alpha02")
}

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

بازخورد

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

ایجاد یک مسئله جدید

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

نسخه ۱.۳

نسخه ۱.۳.۰-آلفا۰۱

۲۳ سپتامبر ۲۰۲۶

androidx.navigation3:navigation3-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 شامل این کامیت‌ها است.

**رفع اشکالات**

  • با مهاجرت به DeferredAnimatedContent و حل مشکلات انتقال انیمیشن به عقب در NavDisplay مشکل انتقال انیمیشن پیش‌بینانه به عقب برطرف شد. I145eaedd b/430807423

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

نسخه ۱.۲.۰

۲۳ سپتامبر ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ شامل این کامیت‌ها است.

نسخه ۱.۲.۰ اکنون پایدار است!

تغییرات مهم از زمان ۱.۱.۰

API نتایج

  • این API جدید امکان تبادل نتایج بین NavEntries را با استفاده از ResultEventBus ارائه شده توسط LocalResultEventBus و ResultEventBusNavEntryDecorator فراهم می‌کند.
  • rememberResultEventBus اضافه شد تا از انتقال ResultEventBus به خارج از ResultEventBusNavEntryDecorator و ارسال آن به rememberResultEventBusNavEntryDecorator پشتیبانی کند.
  • نتایج ارسالی را می‌توان به صورت وضعیت با استفاده از ResultEventBus#conflateAsState یا به صورت جریانی از نتایج با استفاده از ResultEffect ...

رابط برنامه‌نویسی کاربردی دیپ لینک

Navigation3 اکنون از پیوندهای عمیق Kotlin Multiplatform (KMP) در androidx.navigation3.runtime.deeplink از طریق DeepLinkRequest ، DeepLinkUri و DeepLinkMatcher پشتیبانی می کند.

  • DeepLinkRequest و RequestExtras : نشان‌دهنده یک درخواست لینک عمیق است که از یک DeepLinkUri ، یک رشته URI یا یک Android Intent ایجاد شده است. فراداده‌های درخواست اضافی را می‌توان با استفاده از کانتینر RequestExtras که با requestExtras DSL و RequestExtrasKey<T> ساخته شده است، پیوست کرد.
  • DeepLinkMatcher : نشان‌دهنده یک لینک عمیق است که می‌تواند با یک DeepLinkRequest تطبیق داده شود. هر نمونه تطبیق‌دهنده با کلید ناوبری که از این لینک عمیق پشتیبانی می‌کند، مرتبط است. یک کلید ناوبری می‌تواند با چندین تطبیق‌دهنده مرتبط باشد. فراخوانی DeepLinkMatcher.match در صورت موفقیت‌آمیز بودن تطبیق، یک MatchResult برمی‌گرداند که حاوی کلید ناوبری مرتبط است. دو پیاده‌سازی پیش‌فرض DeepLinkMatcher وجود دارد: UriDeepLinkMatcher برای تطبیق لینک‌های عمیق بر اساس Uri و StaticKeyDeepLinkMatcher برای تطبیق لینک‌های عمیق فقط با DeepLinkMatcher.Filter که با یک مقدار بولی تطبیق داده می‌شوند.
  • BackStackMatcher : یک DeepLinkMatcher برای ساخت یک بک‌استک مصنوعی پس از یک تطبیق لینک عمیق موفق. BackStackMatcher می‌توان از طریق تابع افزونه DeepLinkMatcher.withBackStack ایجاد کرد.

قابلیت پیش‌بینی هندلینگ عقب

  • NavigationBackHandler و rememberNavigationEventState برای ساده‌سازی اتصال SceneState با مدیریت پیش‌بینانه‌ی بازگشت به عقب ( onBackCompleted و onBackCancelled ) اضافه شدند. این به کامپوننت‌های رابط کاربری سفارشی اجازه می‌دهد تا از ناوبری استاندارد بازگشت به عقب و حرکات پیش‌بینانه‌ی بازگشت به عقب بدون محاسبه‌ی دستی دلتاهای پشته به عقب پشتیبانی کنند.
  • بهبود انتقال‌های پیش‌بینی‌کننده‌ی بازگشت، از جمله پشتیبانی از حرکات پیش‌بینی‌کننده‌ی بازگشت که در حین انیمیشن‌های رو به جلو در اواسط پرواز فعال می‌شوند.

سایر تغییرات

  • NavEntry.contentKey اکنون به طور پیش‌فرض ترکیبی از key.toString() و key::class.toString() است که از تصادم کلید بین کلیدهای data object که نام ساده یکسانی را در رابط‌های مختلف به اشتراک می‌گذارند، جلوگیری می‌کند.
  • EntryProvider اکنون تطبیق بر اساس نمونه‌های کلیدی را بر اساس انواع کلید اولویت‌بندی می‌کند.
  • یک بررسی خط کد اضافه شد تا مطمئن شویم پیاده‌سازی‌های Scene یا از data class هستند یا equals و hashCode پیاده‌سازی می‌کنند.

نسخه ۱.۲.۰-rc01

۹ سپتامبر ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 شامل این کامیت‌ها است.

رفع اشکالات

  • عدم اجازه به استفاده از نام‌های تکراری در الگوهای URL لینک‌های عمیق ( I8985c ، b/522343165 )

نسخه ۱.۲.۰-بتا۰۱

۲۶ اوت ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 شامل این کامیت‌ها است.

تغییرات API

  • DeepLinkRequest.extras از Map<String, Any> به یک کلاس جدید و ایمن از نظر نوع داده مانند Map به نام RequestExtras تغییر یافته است که جفت‌های RequestExtrasKey<T> با T ذخیره می‌کند. RequestExtras می‌تواند با requestExtras DSL نمونه‌سازی شود. ( Ic929d , b/543883369 )

رفع اشکالات

  • مشکلی که باعث می‌شد حرکات پیش‌بینی‌کننده‌ی بازگشت که در طول انتقال به جلو فعال می‌شوند، در پاسخ به پیشرفت کشیدن انگشت، متحرک نباشند، برطرف شد. اکنون حرکت پیش‌بینی‌کننده‌ی بازگشت به درستی متحرک شده و تکمیل می‌شود. ( Icdcb0 ، b/456218398 )
  • یک بررسی خط کد اضافه شد تا اطمینان حاصل شود که پیاده‌سازی‌های Scene یا کلاس‌های داده هستند، یا equals و hashcode را پیاده‌سازی می‌کنند تا اطمینان حاصل شود که Scene یکسان در صورت لزوم استفاده می‌شود. ( Ibdf0d , b/542316099 )
  • NavEntry.contentKey اکنون به طور پیش‌فرض ترکیبی از key.toString() و key::class.toString() است. این تضمین می‌کند که اشیاء داده‌ای که نام یکسانی دارند اما رابط‌های مختلفی را پیاده‌سازی می‌کنند، دیگر contentKey یکسانی نخواهند داشت. با این حال، key::class پلتفرم JS فقط نام کلاس ساده را به جای نام کامل برمی‌گرداند، بنابراین پلتفرم JS همچنان باید contentKey سفارشی را برای اشیاء داده‌ای با نام‌های تکراری پیاده‌سازی کند. ( I1fbbb ، b/512534342 )
  • خطای IllegalArgumentException که توسط SaveableStateProvider برای کلیدهای تکراری استفاده شده در هنگام پیمایش سریع به عقب، زمانی که چندین انتقال پاپ در حال انجام است، رخ می‌داد، برطرف شد. ( I4d728 ، b/516312097 )

نسخه ۱.۲.۰-آلفا۰۷

۲۹ ژوئیه ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 شامل این کامیت‌ها است.

تغییرات API

  • یک کلاس WrappedMatchResult انتزاعی برای پوشش دادن یک DeepLinkMatcher.MatchResult دیگر اضافه شد. این امکان را فراهم می‌کند که نتایج تطبیق سفارشی روی نتایج تطبیق دیگری لایه‌بندی شوند. ( I7d4dc ، b/470282247 )
  • کلاس جدید BackStackMatcher اضافه شده است که دو پارامتر می‌گیرد: یک نمونه تطبیق‌دهنده و یک لامبدا سازنده که نتیجه تطبیق تطبیق‌دهنده ورودی را ارائه می‌دهد و یک پشته پشتی برمی‌گرداند. پس از یک تطبیق موفق، BackStackMatcher یک BackStackMatchResult برمی‌گرداند که WrappedMatchResult که شامل نتیجه تطبیق اصلی به همراه پشته پشتی ساخته شده با لامبدا است، بسط می‌دهد. BackStackMatcher فقط می‌تواند با تابع افزونه جدید DeepLinkMatcher.withBackStack ایجاد شود. ( Ibf987 ، b/470282247 )

  • یک کلاس انتزاعی DeepLinkSerializer اضافه شده است که KSerializer برای رمزگذاری و رمزگشایی value : T به عنوان یک String می‌دهد. DeepLinkSerializer می‌تواند برای سریال‌سازی آرگومان‌های لینک عمیق غیراولیه استفاده شود. سازگار با rememberSaveable و rememberNavBackStack . ( Id3c9f ، b/470282247 )

  • DeepLinkMatcher یک پارامتر نوع دوم out R : DeepLinkMatcher.MatchResult<T> تا توسعه‌دهندگان بتوانند بدون تبدیل نوع، به ویژگی‌های MatchResult زیرکلاس‌شده‌ی برگردانده‌شده توسط DeepLinkMatcher.match() دسترسی داشته باشند. ( I693d3 , b/470282247 )

  • کران بالای T DeepLinkMatcher.MatchResult's از Any? به Any تغییر کرده است ( I6bf1a ).

  • فیلد uri در سازنده‌ی DeepLinkRequest اکنون به صورت پیش‌فرض null است. uriString در سازنده‌ی ثانویه به uri تغییر نام داده شده است. ( Ia0f14 , b/522194187 )

رفع اشکالات

  • ResultEffect اکنون از rememberUpdatedState برای ثبت آخرین لامبدا onResult استفاده می‌کند. ( I7d2a3 ، b/531709234 )
  • تطبیق لینک عمیق برای بخش‌های خالی مسیر اصلاح شد. اگر نوع آرگومان String باشد، مسیر خالی به عنوان یک مقدار رشته‌ای خالی در نظر گرفته می‌شود. در غیر این صورت، مسیر خالی به عنوان بدون مقدار ارائه شده در نظر گرفته می‌شود و به مقدار پیش‌فرض برمی‌گردد. اگر مقدار پیش‌فرضی وجود نداشته باشد، تطبیق با شکست مواجه می‌شود. ( I56575 ، b/535298128 )
  • پشتیبانی از مقادیر خالی کوئری در DeepLinkRequest.uri اضافه شد. اگر آرگومان از نوع String باشد، مقدار خالی به عنوان یک رشته خالی تحت‌اللفظی در نظر گرفته می‌شود. در غیر این صورت، مقدار خالی به عنوان بدون مقدار ارائه شده در نظر گرفته می‌شود و تطبیق سعی می‌کند به مقدار پیش‌فرض بازگردد. اگر مقدار پیش‌فرضی وجود نداشته باشد، تطبیق با شکست مواجه می‌شود. ( I30343 ، b/535127459 )
  • EntryProvider اکنون تطبیق بر اساس نمونه‌های کلید را بر انواع کلید اولویت‌بندی می‌کند. ( Ib5ec9 , b/533331924 )
  • SceneState اکنون صحنه‌های قبلی را از بالاترین صحنه غیرپوششی به درستی محاسبه می‌کند. ( I91915 ، b/513630541 )

نسخه ۱.۲.۰-alpha06

۱۵ ژوئیه ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 شامل این کامیت‌ها است.

رفع اشکالات

  • مستندات UriDeepLinkMatcher در مورد قطعات uri اصلاح شد تا روشن شود که قطعات دارای کاراکترهای جایگزین (wildcards) با هر ورودی مطابقت دارند اما ورودی به عنوان آرگومان استخراج نمی‌شود. ( I5ad9b ، b/524677091 )
  • رفع مشکل عدم تطابق UriDeepLinkMatcher با درخواستی که الگوی uri آن شامل scheme نبود یا با دابل اسلش شروع نمی‌شد. برای مثال، www.example.com/home اکنون با http://www.example.com/home مطابقت خواهد داشت. ( Ia6b65 , b/522791926 )

نسخه ۱.۲.۰-آلفا۰۵

۱ ژوئیه ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 شامل این کامیت‌ها است.

رابط برنامه‌نویسی کاربردی جدید

  • یک API rememberResultEventBus اضافه شده است که یک ResultEventBus برمی‌گرداند که می‌تواند به rememberResultEventBusNavEntryDecorator ارسال شود. این امکان را فراهم می‌کند که یک ResultEventBus خارج از ResultEventBusNavEntryDecorator قرار گیرد. ( Ia655b , b/516995400 )

درخواست لینک عمیق

  • دو سازنده سازگار با KMP اضافه شد - یکی که DeepLinkUri می‌گیرد و دیگری که یک uri رشته‌ای خام می‌گیرد. ( I3c088 ، b/513200887 ، b/522194187 )
  • (فقط اندروید) یک سازنده اضافه شده که یک Intent می‌گیرد. ( Ia0498 ، b/513200887 ، b/522194187 )
  • همه سازنده‌ها یک فیلد extras برای Map<String, Any> دارند تا اطلاعات درخواست اضافی را پیوست کنند. ( If81d5 , b/513200887 )
  • یک requestExtras dsl جدید به عنوان روشی ایمن برای ساخت نقشه‌ای از extraها اضافه شده است. dsl یک تابع put برای ذخیره جفت‌های RequestExtrasKey به Any ارائه می‌دهد. تابع افزونه Map<String, Any>.get(key) می‌تواند برای خواندن از نقشه با RequestExtrasKey ( I5091c , b/513200887 ) استفاده شود.
  • (فقط اندروید) یک تابع ActionExtrasKey و actionExtra برای ایجاد یک نقشه اضافی با ActionExtrasKey اضافه شد. ( Id0c90 , [b/513200887]
  • یک تابع MimeTypeExtrasKey و mimeTypeExtra برای ایجاد یک نقشه اضافی با MimeTypeExtrasKey اضافه شد. ( I85131 ، b/513200887 )

دیپ‌لینک‌ماچِر

  • توابع DeepLinkMatcher.mimeTypeFilter و DeepLinkMatcher.actionFilter برای ایجاد DeepLinkMatcher.Filters اضافه شده‌اند که DeepLinkRequest بر اساس mimeType یا action فیلتر می‌کنند (فقط اندروید). هر دو فیلتر بر اساس برابری رشته‌ها مطابقت دارند و به حروف کوچک و بزرگ حساس نیستند. ( Ie7e67 ، b/513191950 )

تغییرات API

درخواست لینک عمیق

  • تابع کارخانه‌ای fromAction حذف کنید. برای ایجاد درخواستی مرتبط با یک Action، از فیلد جدید DeepLinkRequest.extras استفاده کنید.( Id0c90 , b/513200887 )
  • از تابع کارخانه‌ای fromMimeType حذف شد. برای ایجاد درخواستی مرتبط با mimeType، از فیلد جدید DeepLinkRequest.extras استفاده کنید. ( I85131 ، b/513200887 )
  • (فقط اندروید) از تابع کارخانه‌ای fromIntent حذف شده است. با یک سازنده جدید جایگزین شده است که یک Intent و map مربوط به extras را می‌گیرد. ( Ia0498 , b/513200887 , b/522194187 )
  • توابع کارخانه‌ای fromUri و fromUriString حذف شدند. با سازنده‌های جدیدی جایگزین شدند که یا DeepLinkUri یا یک uri رشته خام را می‌گیرند. ( Id5b6f ، b/522194187 )
  • DeepLinkMatcher ، DeepLinkMatcher.MatchResult و زیرکلاس‌های آنها اکنون یک کوواریانت T (خروجی T) می‌گیرند تا کلیدهای سلسله مراتبی با استفاده از Matcherها نیازی به تبدیل نوع نداشته باشند. ( I1e453 ، b/525094876 )
  • پارامتر سازنده‌ی UriMatchResult برای آرگومان‌های map اکنون به طور پیش‌فرض روی یک map خالی تنظیم می‌شود. ( I3acdd )
  • کلاس انتزاعی DeepLinkMatcher.Filter اکنون یک رابط تابعی است. فیلد سازنده filter حذف شده و در عوض باید مستقیماً در زیرکلاس ارسال شود. ( I9eb7d , b/522194187 )

رفع اشکالات

  • مشکل ناپدید شدن فوری ورودی ظاهر شده هنگام نمایش به ورودی که دارای فراداده تو در تو حاوی مقادیر لامبدا است، برطرف شد ( Idb872 ، b/520494430 ).
  • مشکل UriDeepLinkMatcher برطرف شد، به طوری که در صورت عدم وجود آرگومان‌های مورد نیاز در طول تطبیق، به جای ارسال MissingFieldException مقدار تهی UriMatchResult برمی‌گرداند ( I5322f ، b/524663005 ).
  • یک UriDeeplinkMatcher حاوی uri با طرح https فقط می‌تواند با درخواست‌هایی که طرح https نیز دارند، مطابقت داده شود. ( Ibfe22 ، b/522304329 )
  • رفع مشکل UriDeepLinkMatcher برای شناسایی صحیح طرح http به عنوان یک تطابق مثبت با https هنگام تطبیق یک DeepLinkRequest با یک UriDeepLinkMatcher . ( I3a62b ، b/518804264 )
  • مقایسه‌گر DeepLinkMatcher.MatchResult اکنون به طور پیش‌فرض وقتی دو نتیجه برابر باشند، 0 را برمی‌گرداند. ( I48ddb ، b/518841353 )
  • UriDeepLinkMatcher اکنون به جای ارسال استثنا در صورت عدم موفقیت درخواست تطبیق به دلیل فقدان آرگومان‌های مورد نیاز، مقدار تهی UriMatchResult برمی‌گرداند. ( I669a7 ، b/470282247 ، b/512923412 )

نسخه ۱.۲.۰-آلفا۰۴

۳ ژوئن ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل انیمیشن لایه‌های تو در تو مانند ModalBottomSheet که هنگام باز شدن لایه‌های بالای آن، به طور غیرمنتظره‌ای دوباره متحرک می‌شدند، برطرف شد. ( Ia2b9e ، b/502624496 )

نسخه ۱.۲.۰-آلفا۰۳

۱۹ مه ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 شامل این کامیت‌ها است.

ویژگی‌های جدید

ناوبری ۳ اکنون از لینک‌های عمیق با DeepLinkRequest و DeepLinkMatcher پشتیبانی می‌کند:

  • DeepLinkRequest یک لینک عمیق درخواستی حاوی DeepLinkUri و یک mimeType یا action اختیاری (فقط اندروید) است. همراه با کلاس جدید، توابع همراهی برای ایجاد یک نمونه با uri ، mimeType یا action وجود دارد. پلتفرم اندروید همچنین دارای یک helper برای ساخت درخواست از یک Intent است. ( Iaaac9 ، b/470282247 )

    val uriOnlyRequest = DeepLinkRequest.fromUriString("https://sampledeeplink.com/home")
    val uriAndMimeRequest = DeepLinkRequest.fromUriString(
      "https://sampledeeplink.com/user/profile?id=123",
      "image/png"
    )
    
  • DeepLinkMatcher یک لینک عمیق را نشان می‌دهد که می‌تواند با یک DeepLinkRequest تطبیق داده شود. هر نمونه از matcher با کلید ناوبری که از این لینک عمیق پشتیبانی می‌کند، مرتبط است. یک کلید ناوبری می‌تواند با چندین matcher مرتبط باشد. فراخوانی DeepLinkMatcher.match یک MatchResult برمی‌گرداند که در صورت موفقیت آمیز بودن تطبیق، حاوی کلید ناوبری مرتبط است. دو پیاده‌سازی پیش‌فرض DeepLinkMatcher وجود دارد: UriDeepLinkMatcher برای تطبیق لینک‌های عمیق بر اساس Uri، و StaticKeyDeepLinkMatcher برای تطبیق لینک‌های عمیق فقط با DeepLinkMatcher.Filter که با یک Boolean تطبیق داده می‌شوند. ( I3798e ، b/470282247 )

  • UriDeepLinkMatcher یک پیاده‌سازی خودرأی از DeepLinkMatcher است که با تطبیق DeepLinkUri با یک کلید ناوبری Serializable، لینک عمیق را مدیریت می‌کند. این برنامه از آرگومان‌های لینک عمیق از انواع اولیه یا مجموعه‌ای از مقادیر اولیه مانند لیست‌ها، آرایه‌ها و مجموعه‌ها پشتیبانی می‌کند. ( I1520b ، b/470282247 )

    @Serializable
    data class UserKey(val id: Int): NavKey
    
    // declare a deep link supported by UserKey
    val userMatcher = UriDeepLinkMatcher(
      uriPattern = "www.sampledeeplink.com/user?userId={id}",
      serializer = serializer<UserKey>()
    )
    
    // handle a requested deep link with fallback key
    val key = userMatcher.match(deepLinkRequest)?.key ?: HomeKey
    
  • DeepLinkUri اضافه شد که یک نسخه kotlin-multplatform از android.net.Uri است ( Id4725 , b/470282247 )

تغییرات API

  • برای مطابقت با compileSdk مربوط به Compose، به compileSdk 37 تغییر یافت.

رفع اشکالات

  • خطای IllegalArgumentException مربوط به AnimatedBottomSheetSample هنگام نمایش چندین overlay برطرف شد. نمونه‌ی SceneStrategy اکنون آخرین صحنه‌ی غیر OverlayScene به درستی محاسبه کرده و آن را در زیر تمام صحنه‌های overlay نمایش می‌دهد. ( If2281 , b/506733412 )
  • وابستگی NavigationEvent به نسخه ۱.۱.۱ ارتقا داده شد که در حالت بازرسی، NavigationEventHandler بدون عملیات را حذف می‌کند تا Predictive Back در پیش‌نمایش‌های اندروید استودیو فعال شود. ( I487fd )

نسخه ۱.۲.۰-آلفا۰۲

۲۲ آوریل ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این کامیت‌ها است.

تغییرات API

  • نام onBack به onBackCompleted تغییر دهید و onBackCancelled به NavigationBackHandler اضافه کنید تا از مدیریت حرکات برگشت لغو شده پشتیبانی کند. ( I92741 )
  • برای ساده‌سازی مدیریت حرکات برگشت به عقب و حرکات پیش‌بینی‌کننده برگشت هنگام استفاده از SceneState NavigationBackHandler را اضافه کنید. این به توسعه‌دهندگان اجازه می‌دهد تا راحت‌تر اجزای رابط کاربری سفارشی ایجاد کنند که از ناوبری استاندارد برگشت به عقب و حرکات پیش‌بینی‌کننده بدون محاسبه دستی دلتاهای پشته برگشت پشتیبانی می‌کنند. ( I6a055 )
  • برای ساده‌سازی اتصال SceneState با مدیریت بازگشتی پیش‌بینی‌کننده، rememberNavigationEventState را اضافه کنید. ( Iae49c )

ویژگی‌های جدید

  • یک API ResultEventBus اضافه شده است تا امکان انتقال نتایج بین NavEntries با LocalResultEventBus ارائه شده توسط ResultEventBusNavEntryDecorator جدید فراهم شود. نتایج ارسالی می‌توانند به عنوان یک وضعیت با ResultEventBus#conflateAsState یا به عنوان یک جریان از نتایج با ResultEffect ارزیابی شوند.

نسخه ۱.۲.۰-آلفا۰۱

۸ آوریل ۲۰۲۶

androidx.navigation3:navigation3-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 شامل این کامیت‌ها است.

رفع اشکالات

  • دسترسی به LocalNavAnimatedContentScope از یک OverlayScene باعث خطای IllegalStateException نمی‌شود، زیرا OverlayScenes اکنون با یک LocalAnimatedContentScope بدون عملیات ارائه می‌شوند. ( I2f00c ، b/486067688 )

نسخه ۱.۱.۷

۲۶ اوت ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.7 منتشر شد. نسخه ۱.۱.۷ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکلی که باعث می‌شد حرکات پیش‌بینی‌کننده‌ی بازگشت که در طول انتقال به جلو فعال می‌شوند، در پاسخ به پیشرفت کشیدن انگشت، متحرک نباشند، برطرف شد. اکنون حرکت پیش‌بینی‌کننده‌ی بازگشت به درستی متحرک شده و تکمیل می‌شود. ( Icdcb0 ، b/456218398 )

نسخه ۱.۱.۶

۱۲ آگوست ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.6 منتشر شد. نسخه ۱.۱.۶ شامل این کامیت‌ها است.

رفع اشکالات

  • NavEntry.contentKey اکنون به طور پیش‌فرض ترکیبی از key.toString() و key::class.toString() است. این تضمین می‌کند که اشیاء داده‌ای که نام یکسانی دارند اما رابط‌های مختلفی را پیاده‌سازی می‌کنند، دیگر contentKey یکسانی نخواهند داشت. با این حال، key::class پلتفرم JS فقط نام کلاس ساده را به جای نام کامل برمی‌گرداند، بنابراین پلتفرم JS همچنان باید contentKey سفارشی را برای اشیاء داده‌ای با نام‌های تکراری پیاده‌سازی کند. ( I1fbbb ، b/512534342 )
  • خطای IllegalArgumentException که توسط SaveableStateHolder برای استفاده مجدد از کلید، زمانی که چندین انتقال pop به دلیل pop شدن سریع از back stack به طور همزمان در حال انجام هستند، رخ می‌داد، برطرف شد. ( I4d728 ، b/516312097 )

نسخه ۱.۱.۵

۲۹ ژوئیه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.5 منتشر شد. نسخه ۱.۱.۵ شامل این کامیت‌ها است.

رفع اشکالات

  • DSL entryProvider اکنون NavEntry ساخته شده با یک نمونه کلید، برای مثال entry(key = userKey) { ... } را نسبت به NavEntry ساخته شده با یک کلاس کلید مانند entry<UserKey>{ ... } .( Ib5ec9 , b/533331924 ) در اولویت قرار می‌دهد.

نسخه ۱.۱.۴

۱ ژوئیه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.4 منتشر شد. نسخه ۱.۱.۴ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل ناپدید شدن فوری ورودی ظاهر شده هنگام نمایش به ورودی که دارای فراداده تو در تو حاوی مقادیر لامبدا است، برطرف شد ( Idb872 ، b/520494430 ).

نسخه ۱.۱.۳

۱۷ ژوئن ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.3 منتشر شد. نسخه ۱.۱.۳ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل انیمیشن لایه‌های تو در تو مانند ModalBottomSheet که هنگام باز شدن لایه‌های بالای آن، به طور غیرمنتظره‌ای دوباره متحرک می‌شدند، برطرف شد. ( Ia2b9e ، b/502624496 )

  • وابستگی NavigationEvent به نسخه ۱.۱.۲ ارتقا یافت که در آن NavigationEventHandler بدون عملیات در حالت بازرسی حذف شد تا Predictive Back در پیش‌نمایش‌های اندروید استودیو فعال شود.

نسخه ۱.۱.۲

۱۹ مه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.2 منتشر شد. نسخه ۱.۱.۲ شامل این کامیت‌ها است.

رفع اشکالات

  • وابستگی NavigationEvent به نسخه ۱.۱.۱ ارتقا داده شد که در حالت بازرسی، NavigationEventHandler بدون عملیات را حذف کرد تا Predictive Back در پیش‌نمایش‌های اندروید استودیو فعال شود.

نسخه ۱.۱.۱

۲۲ آوریل ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ شامل این کامیت‌ها است.

رفع اشکالات

  • دسترسی به LocalNavAnimatedContentScope از یک OverlayScene باعث خطای IllegalStateException نمی‌شود، زیرا OverlayScenes اکنون با یک LocalAnimatedContentScope بدون عملیات ارائه می‌شوند. ( I2f00c ، b/486067688 )

نسخه ۱.۱.۰

۸ آوریل ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ شامل این کامیت‌ها است.

نسخه ۱.۱.۰ اکنون پایدار است!

تغییرات مهم از زمان ۱.۰.۰

عناصر مشترک بین صحنه‌ها - Navigation3 اکنون از پردازش صحنه‌ها به عنوان شیء عنصر مشترک پشتیبانی می‌کند. این بدان معناست که وقتی صحنه‌ها تغییر می‌کنند، می‌توان از انتقال روان آنها اطمینان حاصل کرد. می‌توانید این کار را با ارسال SharedTransitionScope به NavDisplay یا به rememberSceneState فعال کنید.

SceneDecoratorStrategy - معرفی SceneDecoratorStrategy برای پشتیبانی از مواردی مانند تزئین صحنه‌ها با اجزای رابط کاربری مشترک یا اشتراک‌گذاری حالت در صحنه‌ها.

NavMetadata DSL - Navigation3 اکنون یک DSL متادیتای جدید با قابلیت اطمینان از نوع داده (type-safe) ارائه می‌دهد. DSL از یک رابط MetadataKey جدید استفاده می‌کند که امکان تعریف انواع کلید و مقداری را که می‌خواهند به نقشه متادیتا ارائه دهند، فراهم می‌کند. این رابط همچنین NavMetadataKeys جدیدی را برای انتقال‌های NavDisplay اضافه کرده است تا بتوان از آنها با DSL متادیتای جدید برای افزودن انتقال‌ها به NavDisplay استفاده کرد.

انیمیشن‌های OverlayScene - رابط OverlayScene یک فراخوانی برگشتی جدید به onRemoved دارد که به حالت تعلیق درمی‌آید. این فراخوانی برگشتی پس از حذف کلید مرتبط با صحنه از backstack، اما قبل از ترک ترکیب، فراخوانی می‌شود. این امر به انیمیشن‌های خروجی که درون onRemoved فراخوانی می‌شوند، اجازه می‌دهد تا قبل از حذف صحنه overlay از ترکیب، تکمیل شوند.

تغییرات دیگر - NavDisplay و rememberSceneState اکنون به جای پارامتر تکی SceneStrategy قبلی که توسط میان‌وند then زنجیر شده بود، یک List<SceneStrategy> می‌گیرند. - اکنون می‌توانید به صورت پویا فراداده را با در نظر گرفتن کلید ورودی از طریق EntryProvider DSL اضافه کنید.

نسخه ۱.۱.۰-rc01

۲۵ مارس ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 شامل این کامیت‌ها است.

رفع اشکالات

  • NavDisplay اکنون تضمین می‌کند که ورودی‌هایی که در زیر پوشش‌ها نمایش داده می‌شوند، Lifecycle به STARTED محدود شود. این امر تضمین می‌کند که APIهایی مانند dropUnlessResumed هنگام استفاده از دیالوگ‌ها به کار خود ادامه دهند. ( If209f ، b/483966071 )
  • مشکلی در NavDisplay که باعث می‌شد حرکت رفت و برگشتی بین صفحات مشابه و قطع انیمیشن‌های بین این دو صفحه، باعث نادرست شدن ترتیب z صفحات شود، برطرف شد. ( I4d491 ، b/459419800 )

نسخه ۱.۱.۰-بتا۰۱

۱۱ مارس ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۱.۰-آلفا۰۵

۲۵ فوریه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 شامل این کامیت‌ها است.

تغییرات API

  • NavDisplay و rememberSceneState اکنون به جای پارامتر تکی SceneStrategy قبلی که توسط میان‌وند then زنجیر شده بود، یک List<SceneStrategy> می‌گیرند. این بیشتر با List<SceneDecoratorStrategy<T>> که هر دوی این APIها قبلاً می‌گیرند، همسو است. APIهای قبلی منسوخ شده‌اند. ( I78b2c , b/482108465 )
  • یک عملگر #contains برای بررسی اینکه آیا نقشه فراداده شامل NavMetadataKey داده شده است یا خیر، اضافه شده است ( Ic30db ، b/485311895 ).
  • DialogKey NavMetadataKey برای DialogSceneStrategy اضافه شد تا با Metadata DSL استفاده شود. ( Ic7a26 ، b/483388817 )

نسخه ۱.۱.۰-آلفا۰۴

۱۱ فوریه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • Navigation3 اکنون یک DSL فراداده‌ی جدید با قابلیت اطمینان از نوع داده (type-safe) ارائه می‌دهد. DSL از یک رابط MetadataKey جدید استفاده می‌کند که امکان تعریف انواع کلید و مقداری را که می‌خواهند به نقشه‌ی فراداده ارائه دهند، فراهم می‌کند. این رابط همچنین NavMetadataKey های جدیدی را برای انتقال‌های NavDisplay اضافه کرده است تا بتوان از آنها با DSL metadata جدید برای افزودن انتقال‌ها به NavDisplay استفاده کرد. ( Ic10ef ، Ic049c ، b/476213928 )

تغییرات API

  • رابط OverlayScene یک فراخوانی برگشتی جدید به onRemoved دارد که صحنه را به حالت تعلیق در می‌آورد. این فراخوانی برگشتی پس از حذف کلید مرتبط با صحنه از پشته پشتی، اما قبل از ترک ترکیب، فراخوانی می‌شود. این امر به انیمیشن‌های خروجی که درون onRemoved فراخوانی می‌شوند، اجازه می‌دهد تا قبل از حذف صحنه overlay از ترکیب، تکمیل شوند. ( I29a72 , b/440558061 )
  • SceneStrategy تابع تزئین را به یک SceneDecoratorStrategy جدید تفکیک کرده است. این رابط جدید همان چیزی است که باید برای تزئین صحنه‌ها استفاده شود. APIهای جدیدی برای NavDisplay و rememberSceneState وجود دارد که امکان افزودن SceneDecoratorStrategies را فراهم می‌کند. ( If9385 , b/477669607 , b/477670333 )

رفع اشکالات

  • خطایی که باعث می‌شد ارسال SharedTransitionLayout به NavDisplay یا rememberSceneState و استفاده از هرگونه OverlayScene باعث خرابی شود، برطرف شد، زیرا استفاده از SharedTransitionLayout فقط با NavEntries که به عنوان بخشی از AnimatedContent رندر می‌شوند، کار می‌کند و OverlayScene به طور جداگانه در پنجره‌های خود رندر می‌شوند. ( I1bb76 ، b/478664101 )

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

  • از Navigation3 1.0.1: Navigation3 اکنون به NavigationEvent 1.0.2 وابسته است. این مورد، خطای IllegalStateException ناشی از استفاده از NavDisplay در طول پیش‌نمایش‌های AndroidStudio را برطرف می‌کند. ( Id7212 ، b/477149762 )

نسخه ۱.۱.۰-آلفا۰۳

۲۸ ژانویه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • اکنون می‌توانید به صورت پویا فراداده را با در نظر گرفتن کلید ورودی از طریق EntryProvider DSL اضافه کنید. ( I942fb ، b/474416976 )

نسخه ۱.۱.۰-آلفا۰۲

۱۴ ژانویه ۲۰۲۶

androidx.navigation3:navigation3-*:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • SceneStrategy اکنون از طریق تابع جدید calculatedScene(Scene) از صحنه‌های تودرتو پشتیبانی می‌کند. این بدان معناست که SceneStrategy ها می‌توانند سفارشی‌سازی شوند تا قابلیت‌های بیشتری را برای صحنه‌های دیگر فراهم کنند. ( I5df7c ، b/440333896 )

نسخه ۱.۱.۰-آلفا۰۱

۳ دسامبر ۲۰۲۵

androidx.navigation3:navigation3-*:1.1.0-alpha01 منتشر شد. نسخه 1.1.0-alpha01 شامل این کامیت‌ها است.

تغییرات API

  • Navigation3 اکنون از پردازش صحنه‌ها به عنوان شیء عنصر مشترک پشتیبانی می‌کند. این بدان معناست که وقتی صحنه‌ها تغییر می‌کنند، می‌توان از انتقال روان آنها اطمینان حاصل کرد. می‌توانید این قابلیت را با ارسال SharedTransitionScope به NavDisplay یا به rememberSceneState فعال کنید. ( I15868 )

نسخه ۱.۰

نسخه ۱.۰.۱

۱۱ فوریه ۲۰۲۶

androidx.navigation3:navigation3-*:1.0.1 منتشر شد. نسخه 1.0.1 شامل این کامیت‌ها است.

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

  • Navigation3 اکنون به NavigationEvent 1.0.2 وابسته است. این مورد، خطای IllegalStateException ناشی از استفاده از NavDisplay در طول پیش‌نمایش‌های AndroidStudio را برطرف می‌کند. ( Id7212 ، b/477149762 )

نسخه ۱.۰.۰

۱۹ نوامبر ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0 منتشر شد. نسخه 1.0.0 شامل این کامیت‌ها است.

معرفی Navigation3!

نسخه ۱.۰.۰-rc01

۵ نوامبر ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 شامل این کامیت‌ها است.

رفع اشکالات

  • NavDisplay اکنون یک LocalLifecycleOwner در سطح Scene تنظیم می‌کند که به نویسندگان صحنه اجازه می‌دهد با بررسی اینکه Lifecycle.State RESUMED است، مشخص کنند که آیا همه انتقال‌ها به پایان رسیده‌اند یا خیر. رفتار LocalLifecycleOwner در سطح NavEntry بدون تغییر باقی می‌ماند: اگر یک انتقال در حال انجام باشد، همچنان در STARTED باقی می‌ماند و اگر NavEntry از پشته پشتی برداشته شده و در حال انیمیشن‌سازی باشد، علاوه بر این در CREATED نیز محدود می‌شود. ( I03113 ، b/454045829 )

نسخه ۱.۰.۰-بتا۰۱

۲۲ اکتبر ۲۰۲۵

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 یا دستورات key remember را از مقادیر صحیح تعریف کنید. ( 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 )
  • The navigationevent-compose handler APIs are updated. NavigationEventHandler and NavigationBackHandler (and variants) now support a new overload that accepts a hoisted NavigationEventState s. The simple overloads (taking currentInfo ) are preserved and now use this new state model internally. ( Ic3251 , b/444734264 )
  • All of the Scene APIs have been moved out of navigation3-ui to navigation3-runtime. This means they are now available on all platforms supported by navigation3-runtime. ( I431d0 , b/444449993 )
  • Added new rememberDecoratedNavEntries overload that takes a list of NavEntry to decorate. The input entries can be already decorated with other entry decorators. ( I5a034 , b/444230270 )
  • Remove navigation3 wildcard type parameters ( I02540 )
  • Improved the handling of generics for the entryProvider DSL. If you were previously importing androidx.navigation3.runtime.entry , this is no longer required. ( I299fc )
  • Restrict the reflection-based NavBackStackSerializer overload to Android. This prevents implicit runtime serialization failures on non-Android platforms by enforcing the use of the explicit SavedStateConfiguration overload in multiplatform code. ( I73313 , b/420443609 )
  • Make NavigationEvent 's swipeEdge an @IntDef ( Icee54 , b/443950342 )
  • Restrict NavBackStack serialization to Android. This prevents runtime failures on non-Android platforms. For multiplatform state saving, use the rememberNavBackStack overload with an explicit SavedStateConfiguration . ( I1e418 , b/420443609 )

رفع اشکالات

  • Fix crash during predictive back when nested NavDisplay has a single child entry. ( I2cdc0 , b/441933162 )

Version 1.0.0-alpha09

۱۰ سپتامبر ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits .

API Changes

  • The DecoratedNavEntryProvider has been replaced with rememberDecoratedNavEntries that creates and return NavEntries decorated with the list of provided decorators ( I0fe1c , b/441328236 )
  • NavBackStack is now generic over the NavKey type. This allows apps and libraries to define custom key types for their back stacks, rather than being restricted to NavKey . ( I4d190 , Iad2f4 , b/420443609 )
  • NavBackStack is now @kotlinx.serialization.Serializable , making it possible to save and restore navigation state across process death and configuration changes without extra boilerplate. ( I2c3cf , b/420443609 )
  • RememberNavBackStack has been moved to commonMain to ensure it is provided on all platform targets. ( Id69e7 , b/420443609 )

رفع اشکالات

  • NavDisplay now correctly moves each individual NavEntry to the correct Lifecycle.State . ( I30aac , b/440145700 )
  • Fixed an issue where NavDisplay would ignore any nested NavigationEventDispatcherOwner set via the NavigationEvent library's LocalNavigationEventDispatcherOwner . ( I6224a )

Dependency Changes

Version 1.0.0-alpha08

۲۷ آگوست ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits .

ویژگی‌های جدید

  • Added new Kotlin MultiPlatform (KMP) targets to Navigation3 Runtime artifacts. Navigation3 Runtime now supports the following platforms in total: JVM (Android and Desktop), Native (Linux, iOS, watchOS, macOS, MinGW), and Web (JavaScript, WasmJS). ( I55078 , b/424410398 , b/419294028 , b/419046226 ). Note: This does not provide KMP targets for Navigation3 UI artifact. On other platforms, you will need to implement your own custom NavDisplay . If you would like to see it supported, please vote on the Jetbrains issue here and track the progress for additional support there.
  • The NavDisplayInfo object is now public and can be used to retrieve the list of visible entries from the NavDisplay . ( Ibc91f )

API Changes

  • Added a new NavBackStackSerializer to be used in conjunction with rememberNavBackStack to perform state restoration. rememberNavBackStack() now also takes a SavedStateConfiguration that can be used to provide your own configuration. ( I2f4d2 , I4cd58 , b/420443609 )

رفع اشکالات

مشکلات شناخته شده

  • There was a bug introduced by I8bf6d that caused Lifecycles to be based on scenes instead of individual entries, which broke Lifecycle for any cases where the key provided to the NavEntry is not a String or your NavEntry has not overridden the contentKey and set it equal to the key (note that doing this enforces that your key can be saved into a Bundle ). This has been fixed for the next release. ( b/440145700 )

Version 1.0.0-alpha07

۱۳ آگوست ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits .

MinSdk Update

API Changes

  • SavedStateNavEntryDecorator now uses the SaveableStateRegistry built into SaveableStateProvider to save and restore states. ( If8d9a )
  • The predictivePopTransitionSpec is now provided the swipe edge as a parameter, allowing you to customize the transition based on what edge the user started the Predictive Back gesture from. ( I753a8 )

رفع اشکالات

  • Fixed an issue that would cause custom scenes to be infinitely recalculated because the most recent scene was not being remembered. ( I7ba84 , b/418153031 )

Dependency update

Version 1.0.0-alpha06

۳۰ ژوئیه ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits .

Dependency Update

Version 1.0.0-alpha05

July 2, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits .

Behavior Changes

  • The NavEntry 's state is now strictly based on the current list of decorators passed to the NavDisplay . This means that decorators should be swapped along your back stacks in the case of multiple back stacks in order to preserve the state of the NavEntries on the back stack. Otherwise, the states will be cleared as if the entries were popped (instead of a swap). ( I7a759 , b/428033667 )

Version 1.0.0-alpha04

۱۸ ژوئن ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits .

API Changes

  • NavEntry.content is now private. To invoke NavEntry content, call the new NavEntry.Content() api which no longer requires a key parameter to invoke. ( Icd0fd , b/420991203 )
  • NavEntry.key is now a private field. The NavEntry and its relevant states should be identified by the new contentKey field which is generated from the new contentKeyFactory lambda and defaults to a saveable hash generated from NavEntry.key ( I81a6c , b/422001357 , b/420991203 I2d7d4 , b/420991203 , b/422841812 )

Dependency Changes

  • Navigation3 now depends on the new androidx.navigationevent.compose artifact.

Version 1.0.0-alpha03

۴ ژوئن ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits .

رفع اشکالات

  • Navigation3 will no longer clear decorator states for backStacks that have been swapped out and replaced with another backStack instance. ( I28a42 , b/415076044 )

Version 1.0.0-alpha02

۲۳ مه ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits .

رفع اشکالات

  • Fixed an issue with the SavedStateNavEntryDecorator which caused collisions for different data classes with the same property values. ( b/418070648 , Iff4775 )
  • Fixed a missing class issue that would cause crashes when running without declaring explicit dependencies. ( b/419049149 , I4b4ed )

Version 1.0.0-alpha01

۲۰ مه ۲۰۲۵

androidx.navigation3:navigation3-*:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits .

ویژگی‌های جدید

Navigation3 is a new navigation library built specifically to handle Jetpack Compose in-app navigation. The androidx.navigation3.runtime artifact provides the building blocks, while the androidx.navigation3.ui artifact provides the UI layer via the NavDisplay API. Developers can provide their own state directly to the NavDisplay composable function, which changes the content based on changes in the developer state.

@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 */ }
})

For more information, see the Navigation3 guide .