无法使用模型更新可变状态流



我正在尝试更新Model的一个参数。我有一个MutableStateFlow,其中有一个列表,其中包含我创建的一些模型。

data class MyModel(
val id: Int,
val category: String,
var completed: Boolean
)
val listOfModel = listOf(
MyModel(
id = 0,
category = "shopping",
completed = true
),  MyModel(
id = 1,
category = "web",
completed = false
)
)
var _modelStateFlow = MutableStateFlow(listOfModel)
var modelStateFlow = _modelStateFlow.asStateFlow()

我想在我的另一节课上做的是更新";已完成";模型中的参数。这就是我尝试过的,但我得到了以下错误:

类型不匹配。必需:列表<quot;MyModel">找到:MyModel

_modelStateFlow.update { it[current.value!!].copy(completed = !modelStateFlow.value[current.value!!].completed) }

你可以这样做:

_modelStateFlow.update { list ->
list.mapIndexed { index, myModel ->
if(index == indexToUpdate) myModel.copy(completed = !myModel.completed)
else myModel
}
}

出现该错误的原因是,您需要在update函数中返回一个新列表,该列表表示StateFlow的新值。您可以使用map函数创建新列表。以所需的索引更新模型,使其他索引保持原样。

相关内容

  • 没有找到相关文章

最新更新