无法使用模型更新 MutableStateFlow
Can't update MutableStateFlow with 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()
我想在我的另一个 class 中做的是更新模型中的“已完成”参数。这就是我尝试的方法,但出现以下错误:
Type mismatch. Required: List<"MyModel"> Found: 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
}
}
您收到该错误的原因是,您需要 return 在 update
函数中创建一个新列表,该列表表示 StateFlow
的新值。您可以使用 map
函数创建新列表。在所需索引处更新模型,保持其他索引不变。
我正在尝试更新模型的参数。我有一个 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()
我想在我的另一个 class 中做的是更新模型中的“已完成”参数。这就是我尝试的方法,但出现以下错误:
Type mismatch. Required: List<"MyModel"> Found: 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
}
}
您收到该错误的原因是,您需要 return 在 update
函数中创建一个新列表,该列表表示 StateFlow
的新值。您可以使用 map
函数创建新列表。在所需索引处更新模型,保持其他索引不变。