值记得{mutableStateOf()}可以保持后,我完成了应用程序?



我正在用Jetpack compose开发登录的导航流程。那我就不懂这些功能了。

@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的compose被调用时,CheckSignedIn的也被调用。我不知道在CheckSignedInremember { mutableStateOf(false)}的值是如何注册和工作的。我的问题是,如果我完成应用程序,记住的值是否仍然注册?

每次调用SignupScreen, CheckSignedIn函数的所有内容是否从头开始?

请告诉我整个流程如何进行。谢谢你。

remember帮助我们保存任何状态时,应用程序正在运行或在后台,所以当你完成应用程序并再次启动它一切都将从零开始,所以alreadyLoggedIn状态将回到false当你重新启动应用程序。

要在关闭应用程序后保存状态,您需要查看数据存储:

文档:https://developer.android.com/topic/libraries/architecture/datastore

播放列表:https://youtube.com/playlist?list=PLWz5rJ2EKKc8to3Ere-ePuco69yBUmQ9C

最新更新