Функция rememberDrawerState
Функция rememberDrawerState возвращает
DrawerState
и хранит его между перерисовками.
Начальное положение задают через initialValue
из перечисления DrawerValue.
Полученный объект передают в drawerState
у
ModalNavigationDrawer
и
DismissibleNavigationDrawer.
Синтаксис
val drawerState = rememberDrawerState(DrawerValue.Closed)
Параметры
| Параметр | Описание |
|---|---|
initialValue |
DrawerValue.Closed или DrawerValue.Open
при первом показе экрана.
|
confirmStateChange |
Лямбда, которая решает, можно ли перейти в новое состояние панели. |
Пример
Давайте создадим drawer в закрытом состоянии:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.Text
import androidx.compose.material3.rememberDrawerState
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val drawerState = rememberDrawerState(DrawerValue.Closed)
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
Text(text = "abcde")
},
) {
Text(text = "12345")
}
}
}
}
На экране сначала будет виден только текст "12345",
меню скрыто.
Пример
Давайте откроем панель через метод open в корутине:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.Text
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.LaunchedEffect
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val drawerState = rememberDrawerState(DrawerValue.Closed)
LaunchedEffect(Unit) {
drawerState.open()
}
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
Text(text = "abcde")
},
) {
Text(text = "12345")
}
}
}
}
На экране после запуска активности панель сама откроется
и покажет текст "abcde".
Смотрите также
-
класс
DrawerState,
который возвращает rememberDrawerState -
метод
open,
который выдвигает панель -
метод
close,
который прячет панель -
функция
ModalNavigationDrawer,
которая принимает drawerState