Как отобразить тост в JetPack Compose, когда операция добавления завершена?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отобразить тост в JetPack Compose, когда операция добавления завершена?

Сообщение Anonymous »

Мне нужно отобразить сообщение только при завершении операции добавления элемента в Firebase. Это функция в интерфейсе: < /p>

Код: Выделить всё

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)
}
В ViewModel я называю AddItem нравится это:
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-complete
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»