0

我正在尝试更新我的模型的参数。我有一个 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()

我想在我的其他课程中做的是更新模型中的“完成”参数。这就是我尝试过的,但我收到以下错误:

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

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

1 回答 1

0

你可以这样做:

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

您收到该错误的原因是,您需要在update函数内返回一个新列表,该列表表示StateFlow. map您可以使用函数创建该新列表。在所需索引处更新模型,保持其他索引不变。

于 2021-11-18T11:10:31.217 回答