Snackbars и SnackbarHostState
Показывайте временные сообщения в стиле Material.
«Snackbars и SnackbarHostState» — бесплатный урок Jetpack Compose Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Jetpack Compose Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Jetpack Compose Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What Is a Snackbar?
A Snackbar is a brief message that slides up at the bottom, like Message sent, then fades on its own. It informs without blocking the screen. 💬
Snackbar vs Dialog
A dialog demands a response; a Snackbar does not. Reach for it for quick confirmations, not for choices the user must make.
Meet SnackbarHostState
Showing a snackbar is driven by SnackbarHostState. This object holds the queue and gives you the function that triggers a message.
val hostState = remember { SnackbarHostState() }Remember It
Wrap the state in remember so the same SnackbarHostState survives recomposition. A fresh one each frame would lose any pending message.
The snackbarHost Slot
Tell Scaffold where snackbars appear by filling its snackbarHost slot with a SnackbarHost bound to your state.
snackbarHost = { SnackbarHost(hostState) }showSnackbar Is Suspend
The showSnackbar function suspends, because it waits while the message is visible. So you must call it from a coroutine, not directly in a click.
Launch From a Scope
Grab a rememberCoroutineScope and launch showSnackbar inside it. That bridges a normal onClick to the suspend call safely.
scope.launch {
hostState.showSnackbar("Saved")
}Add an Action
Pass an actionLabel to add a button, such as Undo. The call returns a result telling you whether the user tapped that action.
val result = hostState.showSnackbar(
"Deleted", actionLabel = "Undo"
)React to the Result
Check the returned SnackbarResult. If it equals ActionPerformed, run your undo logic; otherwise the snackbar simply dismissed.
if (result == SnackbarResult.ActionPerformed) {
restoreItem()
}Control the Duration
Set how long it lingers with SnackbarDuration: Short, Long, or Indefinite. Use Indefinite only when the message truly needs the user to act.
One Host, Many Messages
A single SnackbarHostState queues messages, showing them one at a time. So share one host per Scaffold rather than creating several.
Quick Check
Why must you launch showSnackbar inside a coroutine scope?
Recap
Remember a SnackbarHostState, wire it into Scaffold's snackbarHost, then launch showSnackbar from a scope. You can finish a polished app shell now. 🎉
Часто задаваемые вопросы
Урок «Snackbars и SnackbarHostState» бесплатный?
Да — полный текст урока «Snackbars и SnackbarHostState» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Jetpack Compose Academy, подпишись на CoddyKit PRO. Курс Jetpack Compose Academy содержит 4 уроков всего.
Чему я научусь в уроке «Snackbars и SnackbarHostState»?
Показывайте временные сообщения в стиле Material. Ты практикуешь Jetpack Compose Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Jetpack Compose Academy?
Предыдущий опыт не требуется. Jetpack Compose Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Snackbars и SnackbarHostState»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Jetpack Compose Academy?
Да. Каждый урок Jetpack Compose Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Scaffold: каркас экрана
- TopAppBar и кнопки действий
- Нижние панели и плавающие кнопки действий
- Snackbars и SnackbarHostState