无法将修饰符传递到 Jetpack Compose 中的列

问题描述 投票:0回答:1

我有这个 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
类上静态运行函数的问题,但我看到在其他代码示例中,这很好,我的代码有何不同?

kotlin user-interface android-jetpack-compose android-jetpack composable
1个回答
0
投票

您可以尝试更改传递给函数参数的修饰符,而不是使用

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...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.