Utkarsh Tiwari
01/28/2021, 2:10 AMUtkarsh Tiwari
01/28/2021, 2:11 AMUtkarsh Tiwari
01/28/2021, 2:12 AM@ExperimentalMaterialApi
@Composable
private fun SetupModals() {
var modalType: ModalType by remember { mutableStateOf(ModalType.HALF) }
val modalState = rememberModalState(initialValue = ModalStateValue.Hidden)
Modal(
title = "タイトル",
type = modalType,
state = modalState,
onActionClick = {},
onNavigationClick = {
modalState.hide()
},
modalContent = {
emptyContent()
}
) {
Screen(
onHalfModalButtonClick = {
modalType = ModalType.HALF
modalState.show()
},
onFullModalButtonClick = {
modalType = ModalType.FULL
modalState.show()
}
)
}
}
Tash
01/28/2021, 2:52 AM@Composable
private fun SetupModals() {
var modalType: ModalType by remember { mutableStateOf(ModalType.HALF) }
val modalState = rememberModalState(initialValue = ModalStateValue.Hidden)
if(modalState.value is Shown) {
Modal(...) {
...
}
}
}
Utkarsh Tiwari
01/28/2021, 2:57 AMTash
01/28/2021, 3:09 AM@Composable
private fun SetupModals() {
var modalType: ModalType by remember { mutableStateOf(ModalType.HALF) }
val modalState = rememberModalState(initialValue = ModalStateValue.Hidden)
ModalButtons(
...,
onHalfModalClick = {
modalState = ShowHalf
},
onFullModalClick = {
modalState = ShowFull
},
)
if (modalState is ShowHalf) {
HalfModal(onExit = { modalState = Hidden })
} else if (modalState is ShowFull) {
FullModal(onExit = { modalState = Hidden })
}
}
Where ModalButtons
represents the buttons, and Half/FullModal
represents the actual Modal (with modal type Half/Full).
Edit 1: updated to simplify
Edit 2: added example of Modal exit callbacks