KMM单代码库实现iOS与Android跨屏导航方法咨询
KMM跨iOS&Android屏幕切换方案汇总
第三方成熟库推荐
- Compose Multiplatform Navigation:和Android端Jetpack Compose导航逻辑完全对齐,用
rememberNavController()就能统一管理两端的导航状态,路由定义、页面跳转逻辑可以直接复用,iOS端基于Compose for iOS渲染,无缝适配。 - Decompose:专为KMM打造的组件化导航框架,支持屏幕栈管理、状态持久化,Android端适配Compose/Fragment,iOS端适配SwiftUI/UIKit,所有导航逻辑用Kotlin写,不用混写Swift代码,复杂场景下稳定性很高。
- Koin Navigation:搭配Koin依赖注入的轻量方案,用注解或代码配置统一路由,两端通过相同的API触发导航,适合小型项目快速落地。
自定义导航方案(无依赖)
如果不想用第三方库,用KMM的Expect/Actual机制自己封装:
- 写一个通用的
NavigationController预期接口,定义navigateTo(route: String)、popBackStack()这些核心方法。 - Android端用原生的
NavHostController实现这个接口,直接对接你之前用的NavGraph。 - iOS端用
UINavigationController(UIKit)或NavigationStack(SwiftUI)实现接口,把路由映射成对应的原生页面跳转操作。
实用提示
- 用Compose Multiplatform的话,确保两端Compose版本一致,不然容易出现渲染异常。
- Decompose有不少官方示例,直接抄对应的导航逻辑就能快速适配自己的项目。
- 自定义封装时,建议用枚举类统一管理所有路由路径,两端各自解析对应页面,避免路由字符串写错。
内容的提问来源于stack exchange,提问作者Sanjay Karki
相关产品推荐
相关产品推荐

