android - 为什么我在 Jetpack Compose 中收到 "Optional Modifier parameter should have a default value of Modifier"警告?

标签 android android-jetpack-compose

我收到以下代码A的警告信息,为什么?

可选的 Modifier 参数应具有默认值 Modifier

代码A

@Composable
fun DisplayIcon(
    modifier: Modifier=Modifier.size(24.dp),
    icon: ImageVector,
    tint: Color = Color.Blue
) {
    Icon(icon, null, modifier = modifier, tint = tint)
}

最佳答案

这只是一个最佳实践。使用其他一些默认值可能会导致奇怪的情况 - 假设您想在一个列中使用两个这样的组件:

Column {
    DisplayIcon()
    DisplayIcon()
}

一切都很好,但现在你想对齐其中一个:

Column {
    DisplayIcon()
    DisplayIcon(modifier = Modifier.align(Alignment.End))
}

突然之间,没有明显的原因,一个的大小与另一个不同。因此,您必须从 DisplayIcon 实现中找出发生了什么,然后可能也将 .size(24.dp) 添加到对齐的可组合项中。但是现在你想改变默认大小,你必须在很多不同的地方这样做......
这样的事情可能是更好的解决方案:

@Composable
fun DisplayIcon(
    modifier: Modifier = Modifier,
    icon: ImageVector,
    tint: Color = Color.Blue,
    size: Dp = 24.dp,
) {
    Icon(icon, null, modifier = modifier.size(size), tint = tint)
}

关于android - 为什么我在 Jetpack Compose 中收到 "Optional Modifier parameter should have a default value of Modifier"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73415055/

相关文章:

java - 不可用的共享库 - INSTALL_FAILED_MISSING_SHARED_LIBRARY

android - 如何处理 jetpack compose 中 popBackStack() 的多次点击

android - java.lang.IllegalStateException : function = <anonymous>, 计数 = 4,索引 = 4

android - 如何在 Android Jetpack Compose 的 TabRow 中更改按下的 Tab 颜色?

android - 如何在 Jetpack Compose 中处理 Mapbox map 的 Activity 生命周期事件?

android - 构建时找不到Composer类

使用 Volley 进行 Android 单元测试

Android O (API 26) 预览模拟器无法启动

java - 如何在Android中将屏幕分成两部分?

android - 生成APK时出现运行时错误