kotlin Jetpack中的嵌套导航在不同的导航图中重用屏幕

qij5mzcb  于 2023-11-21  发布在  Kotlin
关注(0)|答案(1)|浏览(237)

这个问题是这样的:我有一个个人资料屏幕,我可以从底部导航栏访问它(我也有一个嵌套的导航)(底部导航栏:个人资料,主页和搜索),我也可以从搜索转到相同的个人资料(只有个人资料将是不同的人),但当我从搜索,我的底部栏切换到个人资料图标,并没有留在搜索
此代码:

NavigationBar(
        modifier = Modifier,
        containerColor = MaterialTheme.colorScheme.background
    ) {

        items.forEachIndexed { _, item ->

            val selected = navBackStackEntry?.destination?.hierarchy?.any {
                it.route == item.route
            } ?: false

            NavigationBarItem(
                selected = selected,
                onClick = {
                    if (!selected) {
                        navigationState.navigateIn(item.route ?: "")
                    }
                },
                icon = {
                    Icon(
                        imageVector =
                        if (selected) {
                            item.selectedIcon
                        } else {
                            item.unselectedIcon
                        },
                        contentDescription = null,
                    )
                }
            )
        }
    }

字符串
我可以用我的个人资料和其他人的个人资料的不同屏幕来解决这个问题,但是当添加其他屏幕时,我将不得不制作屏幕的副本,所以我不确定这是否是一个好的解决方案

iqih9akk

iqih9akk1#

创建一个新的是很好的。为两个屏幕创建一个共同的可组合函数,并在两个屏幕中调用。正如你在Instagram应用程序中看到的,他们也做了这件事。

相关问题