Skip to content

Commit 2d3a557

Browse files
add createGraph sample
1 parent 8c9c3ec commit 2d3a557

1 file changed

Lines changed: 62 additions & 1 deletion

File tree

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,71 @@
11
package com.smarttoolfactory.tutorial3_1navigation
22

3+
import androidx.compose.foundation.layout.fillMaxSize
34
import androidx.compose.runtime.Composable
5+
import androidx.compose.runtime.remember
6+
import androidx.compose.ui.Modifier
47
import 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
818
fun 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

Comments
 (0)