小编Has*_*san的帖子

在 Jetpack Compose Navigation 中共享 viewModel

谁能建议如何在 Jetpack Compose Navigation 的不同部分中共享 ViewModel?

根据文档,viewModel 通常应该使用活动范围在不同的 compose 函数中共享,但如果在导航内部则不然。

这是我试图修复的代码。看起来我在导航内的两个部分中获得了两个不同的 viewModel:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            NavigationSystem()
        }
    }
}

@Composable
fun NavigationSystem() {
    val navController = rememberNavController()

    NavHost(navController = navController, startDestination = "home") {
        composable("home") { HomeScreen(navController) }
        composable("result") { ResultScreen(navController) }
    }
}

@Composable
fun HomeScreen(navController: NavController) {
    val viewModel: ConversionViewModel = viewModel()
    
    var temp by remember { mutableStateOf("") }
    val fahrenheit = temp.toIntOrNull() ?: 0

    Column(
        modifier = …
Run Code Online (Sandbox Code Playgroud)

android-viewmodel android-jetpack-navigation android-jetpack-compose

43
推荐指数
4
解决办法
3万
查看次数