Skip to content

Commit fe6d0d6

Browse files
author
Jeremy Woods
committed
Fix typos and update backstack logic in Nav3 snippets
1 parent b767425 commit fe6d0d6

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

Nav2ToNav3Snippets.md

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ val backstack = remember { mutableStateListOf<Any>(MyKey) }
2424
Navigation 2:
2525
```
2626
NavHost(navController, "myGraph", "profile") {
27-
composeable("profile") { /* content */ }
28-
composeable("friends") {...}
27+
composable("profile") { /* content */ }
28+
composable("friends") {...}
2929
}
3030
```
3131

@@ -85,7 +85,10 @@ navController.popBackStack(Route2, false)
8585

8686
Navigation3:
8787
```
88-
backstack.dropLastWhile { it != Route2 }
88+
val index = backstack.lastIndexOf(Route2)
89+
if (index != -1) {
90+
backstack.removeRange(index + 1, backstack.size)
91+
}
8992
```
9093

9194
## Handle a failed pop back
@@ -118,7 +121,7 @@ if (backstack.size > 1) {
118121
NavDisplay(backstack) { }
119122
```
120123

121-
## Pop up to a destination the navigate
124+
## Pop up to a destination then navigate
122125

123126
Navigation 2:
124127
```
@@ -132,7 +135,11 @@ navController.navigate(
132135

133136
Navigation3:
134137
```
135-
backstack.dropLastWhile { it != "root" }.add(route)
138+
val index = backstack.lastIndexOf("root")
139+
if (index != -1) {
140+
backstack.removeRange(index + 1, backstack.size)
141+
}
142+
backstack.add(route)
136143
```
137144

138145
## Save state when popping up
@@ -237,7 +244,7 @@ val backStack = remember { mutableStateListOf<Any>(Home) }
237244
238245
NavDisplay(backStack, sceneStrategy = DialogSceneStrategy<Any>()) {
239246
when(it) {
240-
Home -> NavEntry(it, metadata = metadata = DialogSceneStrategy.dialog()) {
247+
Home -> NavEntry(it, metadata = DialogSceneStrategy.dialog()) {
241248
// content for the dialog
242249
}
243250
}
@@ -471,7 +478,7 @@ SharedTransitionLayout {
471478
.clickable(
472479
onClick = {
473480
selectFirst.value = !selectFirst.value
474-
navController.navigate(BlueBox)
481+
backstack.add(BlueBox)
475482
}
476483
)
477484
.background(Color.Red)
@@ -490,7 +497,7 @@ SharedTransitionLayout {
490497
.clickable(
491498
onClick = {
492499
selectFirst.value = !selectFirst.value
493-
navController.popBackStack()
500+
backstack.removeLast()
494501
}
495502
)
496503
.alpha(0.5f)
@@ -560,7 +567,12 @@ Navigation 2:
560567
```
561568
NavHost(...) {
562569
composable(...,
563-
deepLinks = listOf(navDeepLink { action = "action" mimeType = "type" })
570+
deepLinks = listOf(
571+
navDeepLink {
572+
action = "action"
573+
mimeType = "type"
574+
}
575+
)
564576
) {
565577
566578
}
@@ -672,7 +684,7 @@ val navBackStack =
672684
backStack + loginStack
673685
}
674686
675-
*NavDisplay(
687+
NavDisplay(
676688
backStack = navBackStack,
677689
modifier = Modifier.padding(paddingValues),
678690
onBack = { backStack.removeLastOrNull() },
@@ -727,8 +739,11 @@ Navigation3:
727739
entry("c") {
728740
DestinationC(
729741
onNavigateToA = {
730-
backstack.dropLastWhile { it != "a"}
731-
backstack.removeLast()
742+
val index = backstack.lastIndexOf("a")
743+
if (index != -1) {
744+
// Pop up to and including "a"
745+
backstack.removeRange(index, backstack.size)
746+
}
732747
backstack.add("a")
733748
},
734749
)
@@ -1072,7 +1087,7 @@ class NavigationTest {
10721087
Navigation 2:
10731088
```
10741089
NavHost(navController, Graph, Profile) {
1075-
composeable(Profile) { AndroidFragment<ProfileFragment>() }
1090+
composable(Profile) { AndroidFragment<ProfileFragment>() }
10761091
}
10771092
```
10781093

0 commit comments

Comments
 (0)