我有这个 Composable,它是一个 composable 函数,旨在为 Android 开发人员的 Jetpack Compose 课程上的 此作业生成所有文本。
@Composable
fun Article(modifier: Modifier = Modifier, textIds: Array<Int>, titleFontSize: TextUnit = 24.sp, ) {
Column(
modifier = Modifier
.padding(16.dp)
.then(modifier),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
textIds.toList().forEachIndexed { index, textId ->
val stringValue: String = stringResource(id = textId)
if (index == 0) {
Text(
text = stringValue,
fontSize = titleFontSize
)
} else {
Text(
text = stringValue
)
}
}
}
}
注意:如果您想知道,有一个单独的可组合项来渲染标题
这段代码构建正常,但是当我尝试在模拟器中运行它时,我收到如下错误:
未应用更改。 添加的变量不支持值初始化:添加静态基元 com.example.articlestation.LiveLiterals$MainActivityKt.Int$$$this$call-$get-dp$$arg-0$call-padding$$this$call -then$arg-0$call-Column$fun-Article 未知是编译时间常数
我可以看到,如果我将
verticalArrangement
和 modifier
注释掉到列中,一切都会运行良好,这似乎是在 Arrangement
或 Modifier
类上静态运行函数的问题,但我看到在其他代码示例中,这很好,我的代码有何不同?
您可以尝试更改传递给函数参数的修饰符,而不是使用
then
关键字。
@Composable
fun Article(
modifier: Modifier = Modifier,
textIds: Array<Int>,
titleFontSize: TextUnit = 24.sp
) {
Column(
modifier = modifier // same as the function parameter
.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
// You content goes here...
}
}