假设我有两个屏幕HomeScreen
和DetailScreen
,并使用合成导航在屏幕之间导航。
图为HomeScreen
-〉DetailScreen
。
当我按下DetailScreen
返回到HomeScreen
时,我希望HomeScreen
对此做出React,并且必须调用一些方法。我希望HomeScreen可组合每次在屏幕上出现时都调用一些方法。如何实现这一点?
NavHost(
navController = navController,
startDestination = "Home"
) {
composable("Home") {
HomeScreen(
onDetailClick= {
navController.navigate("Detail")
}
)
}
composable("Detail") {
DetailScreen(
onBackClick= {
navController.popBackStack()
},
)
}
}
2条答案
按热度按时间pqwbnv8z1#
您应该使用
NavHostController.navigateUp()
而不是NavHostController.popBackStack()
,然后您可以使用LaunchedEffect
和固定值(如Unit
)作为密钥。但要小心,因为每次发生配置更改时,也会重新执行。
xdyibdwo2#
这取决于你如何回到主屏幕.如果你使用
navController.navigete("home")
那么它将工作得很好。
或者如果您使用的是
navController.popBackStack()
,则它将不起作用。为此,您需要首先使用
navController.popBackStack()
导航到主页,然后使用navController.navigete("home")
示例-〉