向前导航时如何将底部工作表保留在后退堆栈中?

Arp*_*kla 2 android kotlin android-jetpack-navigation android-jetpack-compose jetpack-compose-accompanist

我在我的项目中使用伴奏底部表目的地。设置与文档中显示的完全相同。

@Composable
fun MyApp() {
    val bottomSheetNavigator = rememberBottomSheetNavigator()
    val navController = rememberNavController(bottomSheetNavigator)
    ModalBottomSheetLayout(bottomSheetNavigator) {
        NavHost(navController, Destinations.Home) {
           composable(route = "home") {
               HomeScreen(
                   openBottomSheet = { navController.navigate("sheet")  }
               )
           }
           bottomSheet(route = "sheet") {
               MyBottonSheet(
                   navigateToSomeRoute = { navController.navigate("some_route") }
               )
           }
           composable(route = "some_route") {
               SomeComposable(
                   onBackPress = { navController.navigateUp() }
               )
           }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MyBottomSheet这里我有一个打开屏幕的按钮SomeComposable。但是当我从那里向上导航时,我到达了HomeScreen即当我导航离开底部工作表时,底部工作表从后堆栈中弹出。如何将底部工作表保留在后堆栈中,以便当我按“后退”键时SomeComposable返回到打开状态MyBottonSheet(位于 顶部HomeScreen)的上一个状态?

ian*_*ake 5

这不可能。根据导航和返回堆栈文档

对话框目标实现该FloatingWindow接口,表明它们覆盖返回堆栈上的其他目标。因此,一个或多个FloatingWindow目的地只能出现在导航返回堆栈的顶部。导航到未FloatingWindow自动实现的目标会将所有FloatingWindow目标从堆栈顶部弹出。这可确保当前目的地始终在返回堆栈上的其他目的地上方完全可见。

底部工作表目的地也是FloatingWindow浮动在其他目的地之上的目的地。dialog因此,当您导航到除另一个或目的地之外的任何内容时,预计它们会自动从返回堆栈中弹出bottomSheet