hiltViewModel()

갓김치·2024년 11월 28일
0

Android

목록 보기
1/5
@Composable
fun AppNavigation(
    context: Context
) {
    val navController = rememberNavController()
    val loginViewModel: LoginViewModel = hiltViewModel()

    LaunchedEffect(isLoggedIn) {
        Log.d("AppNavigation", "isLoggedIn changed in LaunchedEffect: $isLoggedIn")
        if (isLoggedIn) {
            navController.navigate(AppRoute.LoginHome.route) {
                popUpTo(AppRoute.LogoutHome.route) { inclusive = true }
            }
        } else {
            navController.navigate(AppRoute.LogoutHome.route) {
                popUpTo(AppRoute.LoginHome.route) { inclusive = true }
            }
        }
    }
// 코드생략
        composable(AppRoute.LogoutHome.route) {
            LogoutHomeScreen(loginViewModel)
        }
}

@Composable
fun LoginScreen(
    loginViewModel: LoginViewModel // 새로 만들지말고 받아서 써야함
) {
// 코드 생략
}

problem:

  • LoginScreen에서 login 해도 AppNavigation LaunchedEffect 가 작동을 안해서 로그인 성공해도 다음화면으로 넘어가질 않음
  • 디버깅하다가 LoginViewModel 인스턴스가 계속 initilized 되는걸 발결함

solution:

  • hiltViewModel() 을 필요할때마다 해주는게 아니고 만들어놓은걸 패스해줬어야함
profile
갈 길이 멀다

0개의 댓글