@@ -24,8 +24,8 @@ val backstack = remember { mutableStateListOf<Any>(MyKey) }
24
24
Navigation 2:
25
25
```
26
26
NavHost(navController, "myGraph", "profile") {
27
- composeable ("profile") { /* content */ }
28
- composeable ("friends") {...}
27
+ composable ("profile") { /* content */ }
28
+ composable ("friends") {...}
29
29
}
30
30
```
31
31
@@ -85,7 +85,10 @@ navController.popBackStack(Route2, false)
85
85
86
86
Navigation3:
87
87
```
88
- backstack.dropLastWhile { it != Route2 }
88
+ val index = backstack.lastIndexOf(Route2)
89
+ if (index != -1) {
90
+ backstack.removeRange(index + 1, backstack.size)
91
+ }
89
92
```
90
93
91
94
## Handle a failed pop back
@@ -118,7 +121,7 @@ if (backstack.size > 1) {
118
121
NavDisplay(backstack) { }
119
122
```
120
123
121
- ## Pop up to a destination the navigate
124
+ ## Pop up to a destination then navigate
122
125
123
126
Navigation 2:
124
127
```
@@ -132,7 +135,11 @@ navController.navigate(
132
135
133
136
Navigation3:
134
137
```
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)
136
143
```
137
144
138
145
## Save state when popping up
@@ -237,7 +244,7 @@ val backStack = remember { mutableStateListOf<Any>(Home) }
237
244
238
245
NavDisplay(backStack, sceneStrategy = DialogSceneStrategy<Any>()) {
239
246
when(it) {
240
- Home -> NavEntry(it, metadata = metadata = DialogSceneStrategy.dialog()) {
247
+ Home -> NavEntry(it, metadata = DialogSceneStrategy.dialog()) {
241
248
// content for the dialog
242
249
}
243
250
}
@@ -471,7 +478,7 @@ SharedTransitionLayout {
471
478
.clickable(
472
479
onClick = {
473
480
selectFirst.value = !selectFirst.value
474
- navController.navigate (BlueBox)
481
+ backstack.add (BlueBox)
475
482
}
476
483
)
477
484
.background(Color.Red)
@@ -490,7 +497,7 @@ SharedTransitionLayout {
490
497
.clickable(
491
498
onClick = {
492
499
selectFirst.value = !selectFirst.value
493
- navController.popBackStack ()
500
+ backstack.removeLast ()
494
501
}
495
502
)
496
503
.alpha(0.5f)
@@ -560,7 +567,12 @@ Navigation 2:
560
567
```
561
568
NavHost(...) {
562
569
composable(...,
563
- deepLinks = listOf(navDeepLink { action = "action" mimeType = "type" })
570
+ deepLinks = listOf(
571
+ navDeepLink {
572
+ action = "action"
573
+ mimeType = "type"
574
+ }
575
+ )
564
576
) {
565
577
566
578
}
@@ -672,7 +684,7 @@ val navBackStack =
672
684
backStack + loginStack
673
685
}
674
686
675
- * NavDisplay(
687
+ NavDisplay(
676
688
backStack = navBackStack,
677
689
modifier = Modifier.padding(paddingValues),
678
690
onBack = { backStack.removeLastOrNull() },
@@ -727,8 +739,11 @@ Navigation3:
727
739
entry("c") {
728
740
DestinationC(
729
741
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
+ }
732
747
backstack.add("a")
733
748
},
734
749
)
@@ -1072,7 +1087,7 @@ class NavigationTest {
1072
1087
Navigation 2:
1073
1088
```
1074
1089
NavHost(navController, Graph, Profile) {
1075
- composeable (Profile) { AndroidFragment<ProfileFragment>() }
1090
+ composable (Profile) { AndroidFragment<ProfileFragment>() }
1076
1091
}
1077
1092
```
1078
1093
0 commit comments