gpt4 book ai didi

android - 在获得两个或更多修饰符的 Jetpack compose 组件中,应该如何命名修饰符参数?

转载 作者:行者123 更新时间:2023-12-05 03:29:10 25 4
gpt4 key购买 nike

如果我们有一个 compose 组件有两个或多个修饰符,我们应该如何处理它?我的意思是修饰符的命名,而 lint 提示更改修饰符参数的名称

易于理解的示例代码:

@Composable
private fun CompletionSection(iconModifier: Modifier, textModifier: Modifier, isActivated: Boolean, newText: String?) {
if (isActivated) {
Icon(
painter = painterResource(R.drawable.ds_ic_check_circle),
modifier = iconModifier
.wrapContentSize()
.padding(top = 18.dp),
tint = MaterialTheme.colors.positive,
contentDescription = null
)
} else if (!newText.isNullOrBlank()) {
Surface(
modifier = textModifier.padding(top = 18.dp),
shape = RoundedCornerShape(32.dp),
border = BorderStroke(width = 2.dp, color = MaterialTheme.colors.primary.copy(alpha = 0.6f)),
) {
Text(
overflow = TextOverflow.Ellipsis,
maxLines = 1,
fontSize = 11.sp,
color = MaterialTheme.colors.primary.copy(alpha = 0.6f),
text = newText,
modifier = Modifier
.defaultMinSize(minHeight = 20.dp)
.wrapContentSize()
.padding(horizontal = 6.dp, vertical = 2.dp),
style = MaterialTheme.typography.android.caption2
)
}
}
}

这里,函数使用的地方→

ConstraintLayout(
modifier = Modifier.fillMaxSize(),
constraintSet = decoupledConstraints(
marginSpacing02 = marginSpacing02,
marginSpacing01 = marginSpacing01,
entity = entity
)
) {

CompletionSection(
iconModifier = Modifier.layoutId("completedIcon"),
textModifier = Modifier.layoutId("newTextField"),
isActivated = isActivated,
newText = newText
)
}

最佳答案

我假设出现这种警告的原因是因为您通常有一个必须应用于整个 View 的修饰符。在参数中使用其他修饰符是可以的,但是,例如,如果您需要应用 Modifier.align,则必须复制它。

在您的情况下,当您从使用此函数的位置查看时,很难判断将应用哪个修饰符,哪个不应用 - 它取决于其他参数,您必须了解逻辑。

我认为至少它可以有一个名为 modifier 的通用修饰符,它适用于两个 View 和两个命名 View - 在我看来,这会使 API 更具可预测性。您可以像这样链接修饰符:modifier.then(iconModifier).yourModifier()

无论如何,你可以抑制它:

@SuppressLint("ModifierParameter")
@Composable
// ...

关于android - 在获得两个或更多修饰符的 Jetpack compose 组件中,应该如何命名修饰符参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71051736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com