我正在开发Jetpack登录的导航流程。那我就不明白它的功能了。
@Composable
fun CheckSignedIn(vm: AuthViewModel,navController: NavController){
val alreadyLoggedIn = remember { mutableStateOf(false)}
val signedIn = vm.signedIn.value
if(signedIn && !alreadyLoggedIn.value){
alreadyLoggedIn.value = true
navController.navigate(DestinationScreen.Feed.route){
popUpTo(0)
}
}
}class AuthViewModel @Inject constructor(
val auth: FirebaseAuth
): ViewModel() {
val signedIn = mutableStateOf(false)
init {
signedIn.value = currentUser != null
}@Composable
fun SignupScreen(navController: NavController,vm:AuthViewModel){
CheckSignedIn(vm = vm, navController = navController)
}(我不写没有关系的东西)
当SignupScreen的构图被调用时,CheckSignedIn也被调用。在CheckSignedIn中,我不知道remember { mutableStateOf(false)}的值是如何注册和工作的。我的问题是,如果我完成了这个应用程序,还记得它的价值是否还在注册吗?
每次调用SignupScreen,CheckSignedIn的所有内容都会从一开始就开始吗?
请告诉我如何在全流程中前进。谢谢。
发布于 2022-11-23 10:31:45
remember帮助我们在应用程序运行时或后台保存任何状态,所以当您完成应用程序并再次启动它时,一切都将从零开始,所以当您重新启动应用程序时,alreadyLoggedIn状态将返回到false。
要保存状态,即使在关闭应用程序之后,您也需要查看数据存储:
文档:https://developer.android.com/topic/libraries/architecture/datastore
播放列表:https://youtube.com/playlist?list=PLWz5rJ2EKKc8to3Ere-ePuco69yBUmQ9C
https://stackoverflow.com/questions/74545244
复制相似问题