简体   繁体   中英

Bottom Sheet not being shown if hiding keyboard

If my keyboard is opened, then on clicking of button if i try to hide my keyboard and change sheetState to show() then my keyboard hides but my sheet is not visible.

Mimicing opening of sheetState on result from api call.

Note - Sheet is shown for first time only

setContent {
        val sheetState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden)
        val key = LocalSoftwareKeyboardController.current
        ModalBottomSheetLayout(
            sheetState = sheetState,
            sheetContent = {
                repeat(20) {
                    Text(text = "$it")
                }
            }
        ) {
            Column {
                var otpResponse by remember { mutableStateOf<Boolean?>(null) }
                if (otpResponse == false) {
                    LaunchedEffect(key1 = Unit, block = {
                        delay(180)
                        otpResponse = true
                    })
                }
                if (otpResponse == true) {
                    LaunchedEffect(key1 = Unit, block = {
                        sheetState.show()
                    })
                }
                Column {
                    var string by remember { mutableStateOf("") }
                    TextField(value = string, onValueChange = { string = it })
                    Button(onClick = {
                        key?.hide()
                        otpResponse = false
                    }) {
                        Text(text = "TEST")
                    }
                }
            }
        }
    }

I have modified your code have look which is working without delay

    @OptIn(ExperimentalMaterialApi::class, ExperimentalComposeUiApi::class)
@Preview(showBackground = true)
@Composable
fun DefaultPreview(){
    val sheetState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden)
    val key = LocalSoftwareKeyboardController.current
    val scope = rememberCoroutineScope()
    ModalBottomSheetLayout(
        sheetState = sheetState,
        sheetContent = {
            repeat(20) {
                Text(text = "$it")
            }
        }
    ) {
        Column {
            Column {
                var string by remember { mutableStateOf("") }
                TextField(value = string, onValueChange = { string = it })
                Button(onClick = {
                    key?.hide()
                    scope.launch{
                        sheetState.show()
                    }
                }) {
                    Text(text = "TEST")
                }
            }
        }
    }
}

thanks for my colleague to fix this

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM