I am trying to navigate lets say from onboarding to dashboard and beyond and pop the onboarding once user hits dashboard, but still with 'back action' I end up on onboarding again.
Here is the sample code:
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainUI()
}
}
}
@Composable
fun MainUI() {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = "onboarding"
) {
composable("onboarding") {
Column {
Text("I am on onboarding")
Button(onClick = {
navController.navigate("dashboard") {
popUpTo("dashboard") // I want to get rid of onboarding here
}
}) {
Text("go to dashboard")
}
}
}
composable("dashboard") {
Column {
Text("I am on dashboard")
Button(onClick = {
navController.navigate("detail")
}) {
Text("go to detail")
}
}
}
composable("detail") {
Text("I am on detail")
}
}
}
This doesn't work either
navController.navigate("dashboard") {
popUpTo("dashboard") {
inclusive = true // no difference
}
// ....
popUpTo("onboarding") // also nothing
// ....
popUpTo("onboarding") {
inclusive = true // this crashes -> NavGraph cannot be cast to ComposeNavigator$Destination
}
}
For some reason this kind of works, so dashboard is dismissed and from detail I end up on onboarding 🤦
navController.navigate("detail") {
popUpTo("dashboard") {
inclusive = true
}
}
navController
? – Cartwell