Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
148 of 502 menu
◀ ▶

Функция SnackbarHost

Функция SnackbarHost рисует текущее сообщение из очереди SnackbarHostState. Состояние передают в параметр hostState. Хост обычно ставят в лямбду snackbarHost у Scaffold, а текст добавляют вызовом showSnackbar из корутины.

Синтаксис

SnackbarHost(hostState = snackbarHostState)

Параметры

Параметр Описание
hostState Очередь сообщений. Принимает объект класса SnackbarHostState.
snackbar Лямбда, которая рисует одну полоску. По умолчанию внутри вызывают Snackbar.

Пример

Давайте покажем сообщение из Scaffold:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, ) { padding -> Button( onClick = { scope.launch { snackbarHostState.showSnackbar("abcde") } }, modifier = Modifier.padding(padding), ) { Text(text = "12345") } } } } }

На экране по нажатию кнопки внизу всплывёт полоска с текстом "abcde".

Пример

Давайте выведем второе сообщение подряд:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, ) { padding -> Button( onClick = { scope.launch { snackbarHostState.showSnackbar("abcde") snackbarHostState.showSnackbar("12345") } }, modifier = Modifier.padding(padding), ) { Text(text = "abcde") } } } } }

На экране сообщения покажутся по очереди, второе появится после скрытия первого.

Смотрите также

  • класс SnackbarHostState,
    который хранит очередь snackbar
  • функция Snackbar,
    которой рисуют одну полоску
  • функция Scaffold,
    куда вешают snackbarHost
  • метод showSnackbar,
    который добавляет текст в очередь
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить