Код: Выделить всё
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() {
private val _addItemResponse = MutableStateFlow(Response.Success(""))
val addItemResponse: StateFlow = _addItemResponse.asStateFlow()
fun addItem(item: Item) = viewModelScope.launch {
_addItemResponse.value = Response.Loading
_addItemResponse.value = repo.addItem(item)
}
}
< /code>
и внутри пользовательского интерфейса я использую: < /p>
when(val addItemResponse = viewModel.addItemResponse.collectAsStateWithLifecycle().value) {
is Response.Loading -> CircularProgressIndicator()
is Response.Success -> Toast.makeText(context, addItemResponse.itemId, Toast.LENGTH_LONG).show()
is Response.Failure -> Text(addItemResponse.ex)
}
< /code>
Проблема в том, что каждый раз, когда я начинаю приложение, я получаю пустые тосты. Если я добавляю элемент, я получаю тост -сообщение с идентификатором элемента, что правильно. Но как показать тост -сообщение только тогда, когда я получаю успехи, что означает, когда данные добавляются в Firebase?
Подробнее здесь: https://stackoverflow.com/questions/794 ... s-compelte
Мобильная версия