@@ -16,7 +16,9 @@ import androidx.compose.runtime.CompositionLocalProvider
1616import androidx.compose.runtime.derivedStateOf
1717import androidx.compose.runtime.getValue
1818import androidx.compose.runtime.remember
19+ import androidx.compose.runtime.rememberCoroutineScope
1920import androidx.compose.ui.Modifier
21+ import androidx.compose.ui.platform.LocalSoftwareKeyboardController
2022import cafe.adriel.voyager.core.screen.Screen
2123import cafe.adriel.voyager.core.screen.ScreenKey
2224import cafe.adriel.voyager.core.screen.uniqueScreenKey
@@ -26,6 +28,8 @@ import com.getcode.theme.CodeTheme
2628import com.getcode.theme.sheetHeight
2729import com.getcode.util.recomposeHighlighter
2830import com.getcode.view.components.SheetTitle
31+ import kotlinx.coroutines.delay
32+ import kotlinx.coroutines.launch
2933import timber.log.Timber
3034
3135internal interface ModalContent {
@@ -91,6 +95,16 @@ internal interface ModalContent {
9195 derivedStateOf { closeButton(lastItem) }
9296 }
9397
98+ val keyboardController = LocalSoftwareKeyboardController .current
99+ val composeScope = rememberCoroutineScope()
100+
101+ val hideSheet = {
102+ composeScope.launch {
103+ keyboardController?.hide()
104+ delay(500 )
105+ navigator.hide()
106+ }
107+ }
94108 SheetTitle (
95109 modifier = Modifier ,
96110 title = {
@@ -106,7 +120,7 @@ internal interface ModalContent {
106120 backButton = isBackEnabled,
107121 closeButton = isCloseEnabled,
108122 onBackIconClicked = onBackClicked?.let { { it() } } ? : { navigator.pop() },
109- onCloseIconClicked = onCloseClicked?.let { { it() } } ? : { navigator.hide () }
123+ onCloseIconClicked = onCloseClicked?.let { { it() } } ? : { hideSheet () }
110124 )
111125 Box (
112126 modifier = Modifier
0 commit comments