You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Jetpack Compose中的“val cannot be reassigned”错误

解决Jetpack Compose中"val cannot be reassigned"错误

错误原因

错误出现在Greeting函数的这一行:

modifier = Modifier

Kotlin里函数的参数默认都是不可变的val(无需显式声明),你试图给Greeting函数的modifier参数重新赋值,这就触发了"val cannot be reassigned"的错误。


正确写法示例

场景1:给Column添加独立Modifier

如果要给Column设置专属的Modifier,直接在Column上指定即可,无需修改传入的参数:

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    // 直接给Column设置Modifier,比如添加内边距
    Column(modifier = modifier.padding(16.dp)) {
        Text(
            text = "Hello $name!",
            modifier = modifier
        )
        Text(
            text = "Hello $name!",
            modifier = modifier
        )
    }
}

场景2:基于传入的Modifier扩展使用

如果需要把传入的Modifier和新的属性组合,通过链式调用生成新的Modifier实例即可,不用重新赋值原参数:

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    // 组合传入的Modifier和新属性,生成新的实例
    val columnModifier = modifier.padding(16.dp).fillMaxWidth()
    Column(modifier = columnModifier) {
        Text(
            text = "Hello $name!",
            modifier = modifier
        )
        Text(
            text = "Hello $name!",
            modifier = modifier
        )
    }
}

关键知识点

  • Kotlin函数参数默认是val,不可被重新赋值。
  • Compose的Modifier是不可变对象,所有诸如padding、fillMaxSize的方法都会返回新的Modifier实例,而非修改原对象。

内容的提问来源于stack exchange,提问作者John Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:25:05