Код: Выделить всё
suspend fun addItem(item: Item): Response
< /code>
Это реализация: < /p>
override suspend fun addItem(item: Item) = try {
val itemId = itemsRef.add(item).await().id
Response.Success(itemId)
} catch (ex: Exception) {
Response.Failure(ex)
}
Код: Выделить всё
class ItemViewModel @Inject constructor(
private val repo: ItemRepository
): ViewModel() {
var addItemResponse by mutableStateOf(Response.Loading)
private set
fun addItem(item: Item) = viewModelScope.launch {
addItemResponse = repo.addItem(item)
}
}
< /code>
И внутри пользовательского интерфейса у меня есть кнопка. Когда я нажимаю на него, я добавляю элемент в Firebase: < /p>
var addingItem by remember { mutableStateOf(false) }
Button(
onClick = {
viewModel.addItem(Item("New Item"))
addingItem = true
}
) {
Text(text = "Add Item")
}
if (addingItem) {
when(val addItemResponse = viewModel.addItemResponse) {
is Response.Loading -> CircularProgressIndicator()
is Response.Success -> addingItem = false
is Response.Failure -> print(addItemResponse.ex)
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... -correctly