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

如何让Jetpack Compose的Text组件保留LiveData历史数据不被覆盖

问题:Text组件仅显示LiveData更新的单行数据,如何确保文本不被覆盖而是追加LiveData数据?

原代码

var myLive = MutableLiveData<String>()

setContent {
    val text: String? by myLive.observeAsState()
    text?.let { viewModel.ontextfieldvalChange(it) }

    SelectionContainer {
        Text(
            gameUiState.textfieldval,
            modifier = Modifier
                .background(Color.Black)
                .height(150.dp)
                .verticalScroll(scroll)
                .border(BorderStroke(1.dp, Color.Gray)),
            color = Color.Green,
        )
    }
}

apiWithoutCompose {
    myLive.postValue(link.absUrl("href"))
}

解决方法

核心是修改数据更新逻辑,不直接替换原有文本,而是将新数据追加到已有内容后并换行分隔。修改ontextfieldvalChange方法如下:

fun ontextfieldvalChange(text: String) {
    _gameUiState.update {
        it.copy(textfieldval = it.textfieldval + "\n" + text)
    }
}

每次LiveData推送新数据时,新内容都会被追加到已有文本的下一行,避免覆盖原有内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:38:15