'how to redirect user to login page after sign out with jetpack compose navigation

I'm using jetpack compose in my project. My app contains multiple screens and nested navigation. So I have this in my MainActivity:

   val startDestination = if (setting.isUserLoggedIn)
            HomeNavGraph.HomeRoute.route
        else
            AuthenticationNavGraph.AuthenticationRoute.route

        setContent {
            val navController = rememberNavController()
            DoneTheme {
                NavHost(
                    navController = navController,
                    startDestination = startDestination
                ) {
                    authentication(navController = navController)
                    home()
                }
            }
        }

This code decides that, based on whether the user has already logged in, navigate the user to the authentication screen or home screen. The home navigation is like this:

fun NavGraphBuilder.home() {
    navigation(
        startDestination = HomeNavGraph.HomeScreen.route,
        route = HomeNavGraph.HomeRoute.route
    ) {
        composable(route = HomeNavGraph.HomeScreen.route)
        {
            HomeRouteScreen()
        }
    }
}

The HomeRouteScreen() per se, has bottom navigation and its navHost. Now I want to navigate the user from the profile screen in HomeRouteScreen() to the Authentication screen that its composable is defined in the MainActivity nav graph.

my problem is:

If I call navcontroller.navigate(AuthenticationNavGraph.AuthenticationScreen.route), I get the error that the destination is not explicitly in the current nav graph. On the other hand, if I use the navController which exists in Main Activity, in HomeRouteScreen I get the error that ViewModelStore should be set before setGraph call. So How should I handle this issue?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source