4.30
- 返回
ItemEditViewModel类,添加一个名为updateItem()的suspend函数,该函数不接受任何参数。您可以使用此函数将更新后的实体保存到 Room 数据库。
suspend fun updateItem() {
}
- 在
getUpdatedItemEntry()函数内,添加一个if条件,通过使用函数validateInput()来验证用户输入。 - 对
itemsRepository调用updateItem()函数,并传入itemUiState.itemDetails.toItem()。实体必须为Item类型,才能添加到 Room 数据库中。完成后的函数如下所示:
suspend fun updateItem() {
if (validateInput(itemUiState.itemDetails)) {
itemsRepository.updateItem(itemUiState.itemDetails.toItem())
}
}
- 返回到
ItemEditScreen可组合项。您需要使用协程作用域来调用updateItem()函数。创建一个名为coroutineScope的变量并将其设置为rememberCoroutineScope()。
import androidx.compose.runtime.rememberCoroutineScope
val coroutineScope = rememberCoroutineScope()
- 在
ItemEntryBody()函数调用中,更新onSaveClick函数参数以在coroutineScope中启动协程。 - 在
launch代码块内,对viewModel调用updateItem(),然后返回。
import kotlinx.coroutines.launch
onSaveClick = {
coroutineScope.launch {
viewModel.updateItem()
navigateBack()
}
},
完成后的 ItemEntryBody() 函数调用如下所示:
ItemEntryBody(
itemUiState = viewModel.itemUiState,
onItemValueChange = viewModel::updateUiState,
onSaveClick = {
coroutineScope.launch {
viewModel.updateItem()
navigateBack()
}
},
modifier = modifier.padding(innerPadding)
)
浙公网安备 33010602011771号