產品最新消息

Jetpack Navigation 3 穩定版

閱讀時間:3 分鐘
查看 Don Turner 的個人資料
Don Turner 開發人員關係工程師

Jetpack Navigation 3 1.0 版已穩定發布 🎉,歡迎立即在正式版應用程式中使用。JetBrains 已在 KotlinConf 應用程式中使用 Navigation 3。

Navigation 3 是從頭建構的新導覽程式庫,可支援 Jetpack Compose 狀態。您可以完全掌控返回堆疊、保留導覽狀態,並輕鬆建立自適應版面配置 (例如清單/詳細資料)。JetBrains 甚至還提供跨平台版本。

為什麼要使用新程式庫?

原始 Jetpack Navigation 程式庫 (現為 Nav2) 是在 7 年前設計,雖然能有效達成原始目標,且經過反覆改良,但應用程式的建構方式已發生根本變化。

使用宣告式 UI 進行反應式程式設計,現在已成為常態。Nav3 採用這種做法。舉例來說,NavDisplay (顯示畫面的 Nav3 UI 元件) 只會觀察由 Compose 狀態支援的鍵清單 (每個鍵代表一個畫面),並在清單變更時更新 UI。

nav-display.png

Nav2 也有自己的內部狀態,因此可能難以建立導覽狀態的單一事實來源。使用 Nav3 時,您需要自行提供狀態,因此可以完全掌控。

最後,您希望能有更多彈性和自訂選項。Nav3 不採用單一、單體式 API,而是提供較小、分離的 API (或「建構模塊」),可組合成複雜的功能。Nav3 本身會使用這些建構模塊,為定義明確的導覽用途提供合理的預設值。

這種做法可讓您:

如要進一步瞭解其設計和功能,請參閱產品發布網誌。

從 Navigation 2 遷移

如果您已使用 Nav2,尤其是 Navigation Compose,建議您遷移至 Nav3。為協助您完成這項作業,我們提供了遷移指南。主要步驟如下:

  1. 新增 Navigation 3 依附元件。
  2. 更新導覽路徑,實作 NavKey。路徑不一定要實作這個介面才能使用 Nav3,但如果實作,您就能利用 Nav3 的 rememberNavBackStack 函式建立永久返回堆疊。
  3. 建立類別來保留及修改導覽狀態,也就是保留返回堆疊的位置。
  4. 請使用這些類別取代 NavController。
  5. 將目的地從 NavHost 的 NavGraph 移至 entryProvider。
  6. 將 NavHost 替換為 NavDisplay。

實驗 AI 代理遷移作業

您可以嘗試使用 AI 代理讀取遷移指南,並在專案中執行步驟。如要使用 Android Studio 內建 Gemini 的 Agent 模式試用這項功能,請按照下列步驟操作:

  • 將這份指南的 Markdown 版本儲存到專案中。
  • 將這段提示詞貼到代理,但不要按下 Enter 鍵:「Migrate this project to Navigation 3 using 」。
  • 輸入 @migration-guide.md,將指南做為背景資訊提供給代理。

請務必仔細檢查 AI 代理所做的變更,因為 AI 代理可能會出錯!

歡迎在此提供意見,分享你或服務專員的表現。

常見情境的導覽食譜

對於常見但細微的用途,我們提供方法存放區。這項範例說明如何以特定方式結合 Nav3 API,您可以根據特定需求選擇或修改方案。如果某個方案很受歡迎,我們會考慮將其中不涉及細微差異的部分「升級」至核心 Nav3 程式庫或外掛程式庫。

code-recipes.png

目前有 19 種食譜,包括:

我們目前正在開發深層連結食譜,以及 Koin 整合,並計劃推出許多其他功能。JetBrains 的工程師也發布了 Compose Multiplatform 版本的食譜。

如果您有常見的用途,並希望查看相關食譜,請提出食譜要求。

摘要

如要開始使用 Nav3,請參閱說明文件和食譜。此外,請密切關注一整週的技術內容,包括:

  • 深入探討 API 的影片,涵蓋模組化、動畫和自動調整式版面配置。
  • 與 Nav3 開發工程師進行即時問答 (AMA)。

Nav3 Spotlight 週將於 2025 年 12 月 1 日開始。


和往常一樣,如果發現任何問題,請在這裡回報。

作者:
繼續閱讀