kotlin Jetpack合成导航NavController.popBackStack()无法正常工作

toe95027  于 2023-01-31  发布在  Kotlin
关注(0)|答案(1)|浏览(372)

当使用“合成导航”并在第一个显示的合成对象(startDestination)上多次调用NavController.popBackStack()时,向后导航不再起作用。例如,从此时导航到另一个合成对象,然后调用popBackStack将不起作用。

bq9c1y66

bq9c1y661#

由于某种原因,NavController.backQueue的大小至少为2,即使它应该只显示一个Composable。如果弹出的backstack低于这个值,导航似乎不再工作。(我不知道为什么)
因此,我编写了以下简单的扩展函数,以防止弹出小于2的BackQueue:

fun NavController.navigateBack() {
    if (backQueue.size > 2) {
        popBackStack()
    }
}

您可以像这样使用它:

val navController = rememberNavController()
...
navController.navigateBack()

相关问题