android - 如何在 Jetpack Compose 中传递条件参数?

标签 android android-jetpack-compose android-jetpack android-compose-appbar

我想隐藏 navigationIcon 但是当我传递 nullUnit 时,图标空间仍然可见,如图所示下面。

Menu preview

@Composable
fun DefaultScaffold(
    title: String? = null,
    icon: ImageVector? = null,
    content: @Composable() () -> Unit
) {
    Scaffold(
        topBar = {
            TopAppBar(
                title = {
                    if (title != null) {
                        Text(text = "My Title")
                    }
                },
                navigationIcon = {
                    if (icon != null) {
                        IconButton(
                            onClick = {}
                        ) {
                            Icon(imageVector = Icons.Filled.Close, contentDescription = null)
                        }
                    } else Unit
                }
            )
        }
    ) {
        content()
    }
}

最佳答案

移除条件语句周围的括号,然后在您不想显示图标空间时返回 null 而不是 Unit

所以,会变成

navigationIcon = if (icon != null) {
    {
        IconButton(
            onClick = {}
        ) {
            Icon(imageVector = Icons.Filled.Close, contentDescription = null)
        }
    }
} else null

关于android - 如何在 Jetpack Compose 中传递条件参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68931199/

相关文章:

kotlin - 在 Jetpack Compose 的 BadgeBox 中隐藏徽章

android - 如何使用数据绑定(bind)和导航组件访问嵌套 View ?

java - Android奇怪的ComponentInfo NullPointerException

android - 如何在 Jetpack Compose 中制作可重用的组件?

android - 在android中的日期选择器对话框中显示当前日期

android - 如何像 XML 一样在 Compose Android Studio 中折叠/展开小部件代码区域/区域

android - Kotlin 委托(delegate)破坏导航

android - 如何使用 Android Jetpack App 启动库

android - 如何创建平行四边形形状的背景?

java - 转换为 Dalvik 格式失败,错误 1 ​​- 重复,但无法解析