Функция rememberModalBottomSheetState
Функция rememberModalBottomSheetState
создаёт и хранит между перерисовками объект
SheetState.
Его передают в параметр sheetState
у функции
ModalBottomSheet.
Показ и скрытие листа вызывают suspend-методы
этого класса из корутины
rememberCoroutineScope.
Синтаксис
val sheetState = rememberModalBottomSheetState()
Параметры
| Параметр | Описание |
|---|---|
skipPartiallyExpanded |
Если true, лист не останавливается
в промежуточном положении между скрытым
и полностью раскрытым.
|
confirmValueChange |
Лямбда, которая решает, можно ли перейти в новое положение листа. По умолчанию разрешает любой переход. |
Пример
Давайте свяжем состояние с нижним листом:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val sheetState = rememberModalBottomSheetState()
var open by remember { mutableStateOf(true) }
if (open) {
ModalBottomSheet(
onDismissRequest = { open = false },
sheetState = sheetState,
) {
Text(text = "abcde")
}
}
}
}
}
На экране сразу виден нижний лист
с текстом "abcde".
Пример
Давайте запретим промежуточное положение листа:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val sheetState = rememberModalBottomSheetState(
skipPartiallyExpanded = true,
)
var open by remember { mutableStateOf(true) }
if (open) {
ModalBottomSheet(
onDismissRequest = { open = false },
sheetState = sheetState,
) {
Text(text = "12345")
}
}
}
}
}
На экране лист либо полностью открыт, либо скрыт, без задержки на половине высоты.
Смотрите также
-
функция
ModalBottomSheet,
которая рисует нижний лист на экране -
класс
SheetState,
который возвращает эта функция -
метод
expand,
который раскрывает лист на всю высоту -
метод
hide,
который прячет лист вниз