当我尝试通过修饰符上的 .clickable 导航到另一个屏幕时,我得到了这个。以前从未遇到过这样的问题。这就是我的导航方式以及我在屏幕上看到的内容。
如果网络响应成功,我会显示什么。 onCategorySelectedListener 附加到 CategoryGrid,如下所示。
SuccessfulScreen(
modifier = modifier,
onCategorySelectedListener = {
if (navController.currentDestination?.route != "${Destinations.SelectedCategoryScreen.route}/$it")
navController.navigate(
route = "${Destinations.SelectedCategoryScreen.route}/$it"
)
},
categories = state.categories
)
CategoriesGrid(
modifier = modifier.fadingEdge(topFade),
categories = categories,
onCategorySelectedListener = onCategorySelectedListener,
)
屏幕记录:我在屏幕上看到的内容
我正在使用 androidx.navigation:navigation-compose:2.7.2
好吧,我已经弄清楚了一切。问题是我使用 Dagger 创建了 ViewModel,类似于我使用 View 的方式。因此,我只是编写了一些带有地图的 ViewModelFactory 等,但它不起作用,因此 ViewModel 总是被重新创建,并且由于这一事实,新的状态被发出并触发了重组。我在互联网上搜索并找到了this很好的解决方案,经过我自己需要的一些更改后,它现在可以完美运行。我仍然在 NavHost 的可组合 {} 内创建 ViewModel,但现在它不是每次都重新创建,而是只创建一次,然后由 Dagger 重用。