The use case is the following:
? -> ... -> ?
? -> ... -> ? -> F
if (skipFoo)
? -> ... -> ? -> B
else
? -> ... -> ? -> F -> B
Can this be achieved using the NavOptionsBuilder
from androidx.navigation
?
I know that I can use popUpTo(0) { inclusive = true }
to remove everything but the new destination from the stack but I just want to prevent the current screen to be added when I'm navigating out of it, and only when a certain condition is satisfied.
Also, the content of the stack of destinations is dynamic (the Foo screen can be added at any time) so I can't simply hardcode a popUpToId
with a fixed destination, since I don't know what is the destination immediately before Foo screen on the stack.
It can be achieved by following the code. it has helped me.
Example 1:
Pop everything up to the "home" destination off the back stack before navigating to the "friendslist" destination
navController.navigate("friendslist") {
popUpTo("home")
}
Example 2:
Pop everything up to and including the "home" destination off the back stack before navigating to the "friendslist" destination
navController.navigate("friendslist") {
popUpTo("home") { inclusive = true }
}
Example 3:
Navigate to the "search” destination only if we’re not already on the "search" destination, avoiding multiple copies on the top of the back stack
navController.navigate("search") {
launchSingleTop = true
}
Ref Taken: https://developer.android.com/jetpack/compose/navigation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With