我目前正在探索 Kotlin Multiplatform Mobile (KMP) 开发,并且特别深入研究使用 Jetpack Compose Multiplatform 进行导航。虽然我理解了这种方法的理论方面,但我正在努力寻找实用的、可实施的示例或在线资源。
利用 Jetpack Compose Multiplatform 在多平台项目中实现屏幕(可组合项)之间的无缝导航,并了解与 KMM 项目中此类导航相关的最佳实践。
我尝试过的: 我仔细阅读了官方文档和其他在线资源,但主要遇到的是理论解释,没有具体的示例或演示来说明导航在现实场景中的实现。
具体查询: 对于使用 Jetpack Compose Multiplatform 在 KMM 中实现导航,是否有任何推荐的方法或最佳实践? 任何人都可以分享实际示例或指导我找到资源,在这些资源中我可以找到在这种情况下演示导航的可实现示例或教程吗? 在使用 Jetpack Compose 在多平台项目中实现导航时,是否有任何我应该注意的已知限制或注意事项? 我真诚地感谢任何可以帮助我理解和使用 Jetpack Compose Multiplatform 在 Kotlin Multiplatform 中实现导航的见解、建议或参考。
您可以检查这些库:https://github.com/terrakok/kmp-awesome#-architecture。
我推荐你分解。
自 2024 年 4 月 17 日起,Jetbrain 在 KMP 中引入了 Jetpack Compose 导航(包括 WasmJS!)
kotlin {
// ...
sourceSets {
// ...
commonMain.dependencies {
// ...
implementation("org.jetbrains.androidx.navigation:navigation-compose:2.7.0-alpha03")
}
// ...
}
请注意,目前存在限制(在撰写本文时)
Compose Multiplatform 中导航的当前限制比较 Jetpack Compose:
不支持深层链接(处理或关注它们)。
BackHandler 功能和预测性背部手势不 支持除 Android 之外的任何平台。
您必须实现自己的后台处理行为并自己调用 NavControl.popBackStack。
虽然我建议使用官方导航,但除 Android 之外的所有平台都存在一些错误(例如路线中的参数多于 1),所以要小心。
如果您正在寻找第三方,相当不错的解决方案是 Decompose,请参见此处:https://arkivanov.github.io/Decompose/getting-started/quick-start/
您可以在此处找到有关 KMP Jetpack Compose 导航的更多信息 https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-navigation-routing.html