11package com.smarttoolfactory.tutorial3_1navigation
22
3+ import androidx.compose.foundation.layout.fillMaxSize
34import androidx.compose.runtime.Composable
5+ import androidx.compose.runtime.remember
6+ import androidx.compose.ui.Modifier
47import androidx.compose.ui.tooling.preview.Preview
8+ import androidx.navigation.NavController
9+ import androidx.navigation.NavGraph
10+ import androidx.navigation.NavGraphBuilder
11+ import androidx.navigation.compose.NavHost
12+ import androidx.navigation.compose.composable
13+ import androidx.navigation.compose.rememberNavController
14+ import androidx.navigation.createGraph
515
616@Preview
717@Composable
818fun Tutorial7_1Screen () {
19+ MainContainer ()
20+ }
921
10- }
22+ @Composable
23+ private fun MainContainer () {
24+ val navController = rememberNavController()
25+
26+ // Changing this destination changes where graph will start
27+ val startDestination = RouteA
28+
29+ // This NavGraph will be used with NavHost this navHostController will be assigned
30+ val navGraph: NavGraph = remember(startDestination) {
31+ navController.createGraph(
32+ startDestination = startDestination
33+ ) {
34+ addNavGraph(navController)
35+ }
36+ }
37+
38+ NavHost (
39+ modifier = Modifier .fillMaxSize(),
40+ navController = navController,
41+ graph = navGraph,
42+ )
43+
44+ // Other Alternative
45+ // NavHost(
46+ // modifier = Modifier.fillMaxSize(),
47+ // navController = navController,
48+ // startDestination = RouteA
49+ // ) {
50+ // addNavGraph(navController)
51+ // }
52+ }
53+
54+ private fun NavGraphBuilder.addNavGraph (navController : NavController ) {
55+
56+ composable<RouteA > {
57+ RouteAScreen (navController)
58+ }
59+
60+ composable<RouteB > {
61+ RouteBScreen (navController)
62+ }
63+
64+ composable<RouteC > {
65+ RouteCScreen (navController)
66+ }
67+
68+ composable<RouteD > {
69+ RouteDScreen (navController)
70+ }
71+ }
0 commit comments