当使用“合成导航”并在第一个显示的合成对象(startDestination)上多次调用NavController.popBackStack()时,向后导航不再起作用。例如,从此时导航到另一个合成对象,然后调用popBackStack将不起作用。
startDestination
NavController.popBackStack()
popBackStack
bq9c1y661#
由于某种原因,NavController.backQueue的大小至少为2,即使它应该只显示一个Composable。如果弹出的backstack低于这个值,导航似乎不再工作。(我不知道为什么)因此,我编写了以下简单的扩展函数,以防止弹出小于2的BackQueue:
NavController.backQueue
fun NavController.navigateBack() { if (backQueue.size > 2) { popBackStack() } }
您可以像这样使用它:
val navController = rememberNavController() ... navController.navigateBack()
1条答案
按热度按时间bq9c1y661#
由于某种原因,
NavController.backQueue
的大小至少为2,即使它应该只显示一个Composable。如果弹出的backstack低于这个值,导航似乎不再工作。(我不知道为什么)因此,我编写了以下简单的扩展函数,以防止弹出小于2的BackQueue:
您可以像这样使用它: