撰写中的条件导航,无需点击

Bha*_*mar 9 navigation android android-jetpack-compose

我正在撰写屏幕上工作,在打开应用程序时,我将用户重定向到个人资料页面。如果个人资料完整,则重定向到用户列表页面。

我的代码如下

@Composable
fun UserProfile(navigateToProviderList: () -> Unit) {

val viewModel: MainActivityViewModel = viewModel()

if(viewModel.userProfileComplete == true) {
    navigateToProviderList()
    return
}

else {
  //compose elements here
}

}
Run Code Online (Sandbox Code Playgroud)

但该应用程序正在闪烁,并且在登录时,我可以看到它一次又一次地调用上述重定向条件。在浏览文档时,它提到我们应该仅通过回调进行导航。我在这里如何处理这种情况?我这里没有 onCLick 条件。

Phi*_*hov 10

可组合函数的内容可以被多次调用。

如果您需要在可组合项内执行某些操作,则需要使用副作用

在这种情况下LaunchedEffect应该工作:

LaunchedEffect(viewModel.userProfileComplete == true) {
    if(viewModel.userProfileComplete == true) {
        navigateToProviderList()
    }
}
Run Code Online (Sandbox Code Playgroud)

在键(第一个参数LaunchedEffect)中,您需要指定一些键。自上次重组以来,每次此键发生变化时,都会调用内部代码。你可以放在Unit那里,在这种情况下,当视图出现在第一个位置时,它只会被调用一次