[Navigation Material] Incorrect back behavior with nested navigator
WonderCsabo opened this issue · 2 comments
WonderCsabo commented
Description
When there is a nested navigation, the topmost bottom sheet does not gets the back event, the nested navigatitor pops instead.
Steps to reproduce
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterialNavigationApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AppTheme {
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
val bottomSheetNavigator = rememberBottomSheetNavigator()
val topNavController = rememberNavController(bottomSheetNavigator)
ModalBottomSheetLayout(bottomSheetNavigator) {
NavHost(navController = topNavController, startDestination = "root") {
composable("root") { Root(topNavController) }
bottomSheet("dialog") { Dialog() }
}
}
}
}
}
}
}
@Composable
fun Root(topNavController: NavController) {
Column {
Button(onClick = { topNavController.navigate("dialog") }) {
Text(text = "open dialog")
}
val nestedNavController = rememberNavController()
NavHost(navController = nestedNavController, startDestination = "nested1", modifier = Modifier.weight(1f)) {
composable("nested1") { Nested1(nestedNavController) }
composable("nested2") { Nested2() }
}
}
}
@Composable
fun Nested1(nestedNavController: NavController) {
Button(onClick = { nestedNavController.navigate("nested2") }) {
Text(text = "Open nested2 screen")
}
}
@Composable
fun Nested2() {
Text(text = "nested2")
}
@Composable
fun Dialog() {
Text("My Dialog")
}
- Open nested2 screen
- Open the bottom sheet in the top navigator
- Tap the back button
Expected behavior
The bottom sheet closes.
Additional context
Bottom sheet stays visible, under it we navigate back to nested1 screen.