首页 > 解决方案 > Android Jetpack 撰写和登录屏幕

问题描述

我面临一个问题,我无法理解这里发生了什么。

我正在使用 FirebaseUI 进行身份验证,并且我的可组合组件上有这个逻辑:

if (isAnonymousUser && authResultCode != AuthResultCode.CANCELLED) {
    LaunchedEffect(true) {
        loginLauncher.launch(viewModel.buildLoginIntent()) //This trigger the UI Sign in flow
    }
}
if (!isAnonymousUser) {
    LaunchedEffect(true) {
        navController.popBackStack()
        navController.navigate(Screen.HomeScreen.route)
    }
}

问题是这些行

if (!isAnonymousUser) {
    LaunchedEffect(true) {
        navController.popBackStack()
        navController.navigate(Screen.HomeScreen.route)
    }
}

如果我删除LaunchedEffect,我可以移动到,HomeScreen但是navController.navigate在循环中调用 并且应用程序变得不可用。这来自视图模型:

val isAnonymousUser = viewModel.isAnonymousUser.collectAsState().value

相反,使用LaunchedEffect它不会发生。怎么了?帮我理解一下,我觉得问题出MutableStateisAnonymousUser

标签: androidfirebaseandroid-jetpack-composeandroid-jetpack-navigation

解决方案


推荐阅读