导航到另一个屏幕时,撰写导航屏幕会闪烁

问题描述 投票:0回答:1

当我尝试通过修饰符上的 .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

android android-jetpack-compose android-jetpack navigation-compose
1个回答
0
投票

好吧,我已经弄清楚了一切。问题是我使用 Dagger 创建了 ViewModel,类似于我使用 View 的方式。因此,我只是编写了一些带有地图的 ViewModelFactory 等,但它不起作用,因此 ViewModel 总是被重新创建,并且由于这一事实,新的状态被发出并触发了重组。我在互联网上搜索并找到了this很好的解决方案,经过我自己需要的一些更改后,它现在可以完美运行。我仍然在 NavHost 的可组合 {} 内创建 ViewModel,但现在它不是每次都重新创建,而是只创建一次,然后由 Dagger 重用。

© www.soinside.com 2019 - 2024. All rights reserved.