如您所见,这就是我使用 MaterialBottomNavigation 实现 NavHost 的方式,我在 Messages 和 Feed 屏幕上都有很多项目,当我在这两个屏幕之间导航时,它们会自动重新组合,但我不想因为那里有太多数据,它在导航时闪烁并且 fps 下降到 10 以下,我尝试在 NavHost 之前初始化数据视图模型,但结果仍然相同,有什么方法可以一次组合屏幕并在 viewModels 时更新它们数据更新了吗?
@Composable
private fun MainScreenNavigationConfigurations(
navController: NavHostController,
messagesViewModel: MessagesViewModel = viewModel(),
feedsViewModel: FeedsViewModel = viewModel(),
) {
val messages: List<Message> by messagesViewModel.messages.observeAsState(listOf())
val feeds: List<Feed> by feedsViewModel.messages.observeAsState(listOf())
NavHost(
navController = navController,
startDestination = "Messages"
) {
composable("Messages") {
Messages(navController, messages)
}
composable("Feeds") { Feeds(navController, feeds) }
}
}
答案 0 :(得分:0)
请在您的代码上方使用此代码。它会记住您当前屏幕的状态。
val navController = rememberNavController()
有关更多信息,请查看: https://developer.android.com/jetpack/compose/navigation