一、概念二、ViewModel2.1 添加依赖[versions] viewModel 2.9.6 [libraries] jetbrains-viewModel { module org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose, version.ref viewModel } //可选解决桌面端对于默认调度器 Dispatchers.Main.immediate 可能不可用 kotlinx-coroutinesSwing { module org.jetbrains.kotlinx:kotlinx-coroutines-swing, version.ref kotlinx-coroutines }2.2 使用在非 JVM 平台上无法通过类型反射实例化对象。因此在公共代码中不能直接调用无参数的 viewModel() 函数每次创建 ViewModel 实例时至少需提供一个初始化器作为参数。若仅提供初始化器库会在底层创建默认工厂。但您也可以实现自己的工厂并调用公共 viewModel(...) 函数中更显式的重载版本这与 Jetpack Compose 中的使用方式一致。Composable fun Demo( viewModel: MyViewModel viewModel { MyViewModel() } ) {...}三、Navigation33.1 添加依赖[versions] navigation3 1.0.0-alpha06 navigation3ViewModel 2.10.0-alpha08 navigation3Adaptive 1.3.0-alpha04 navigation3Browser 0.2.0 [libraries] jetbrains-navigation3-ui { module org.jetbrains.androidx.navigation3:navigation3-ui, version.ref navigation3 } jetbrains-navigation3-viewModel { module org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3, version.ref navigation3ViewModel } //可选自适应布局 jetbrains-navigation3-adaptive { module org.jetbrains.compose.material3.adaptive:adaptive-navigation3, version.ref navigation3Adaptive } //可选回退支持web浏览器历史 jetbrains-navigation3-browser { module com.github.terrakok:navigation3-browser, version.ref compose-multiplatform-navigation3-browser }3.2 使用Serializable private data object RouteA : NavKey Serializable private data class RouteB(val id: String) : NavKey // Creates the required serializing configuration for open polymorphism private val config SavedStateConfiguration { serializersModule SerializersModule { polymorphic(NavKey::class) { subclass(RouteA::class, RouteA.serializer()) subclass(RouteB::class, RouteB.serializer()) } } } Composable fun BasicDslActivity() { // Consumes the serializing configuration val backStack rememberNavBackStack(config, RouteA) NavDisplay( backStack backStack, //... ) }