File tree Expand file tree Collapse file tree
app/src/main/java/com/getcode Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ import com.getcode.navigation.core.CodeNavigator
2626import com.getcode.navigation.core.LocalCodeNavigator
2727import com.getcode.theme.CodeTheme
2828import com.getcode.theme.sheetHeight
29+ import com.getcode.util.keyboardAsState
2930import com.getcode.util.recomposeHighlighter
3031import com.getcode.view.components.SheetTitle
3132import kotlinx.coroutines.delay
@@ -98,13 +99,18 @@ internal interface ModalContent {
9899 val keyboardController = LocalSoftwareKeyboardController .current
99100 val composeScope = rememberCoroutineScope()
100101
102+ val keyboardVisible by keyboardAsState()
103+
101104 val hideSheet = {
102105 composeScope.launch {
103- keyboardController?.hide()
104- delay(500 )
106+ if (keyboardVisible) {
107+ keyboardController?.hide()
108+ delay(500 )
109+ }
105110 navigator.hide()
106111 }
107112 }
113+
108114 SheetTitle (
109115 modifier = Modifier ,
110116 title = {
Original file line number Diff line number Diff line change 1+ package com.getcode.util
2+
3+ import android.view.ViewTreeObserver
4+ import androidx.compose.runtime.Composable
5+ import androidx.compose.runtime.DisposableEffect
6+ import androidx.compose.runtime.State
7+ import androidx.compose.runtime.mutableStateOf
8+ import androidx.compose.runtime.remember
9+ import androidx.compose.ui.platform.LocalView
10+ import androidx.core.view.ViewCompat
11+ import androidx.core.view.WindowInsetsCompat
12+
13+ @Composable
14+ fun keyboardAsState (): State <Boolean > {
15+ val keyboardState = remember { mutableStateOf(false ) }
16+ val view = LocalView .current
17+ val viewTreeObserver = view.viewTreeObserver
18+ DisposableEffect (viewTreeObserver) {
19+ val listener = ViewTreeObserver .OnGlobalLayoutListener {
20+ keyboardState.value = ViewCompat .getRootWindowInsets(view)
21+ ?.isVisible(WindowInsetsCompat .Type .ime()) ? : true
22+ }
23+ viewTreeObserver.addOnGlobalLayoutListener(listener)
24+ onDispose { viewTreeObserver.removeOnGlobalLayoutListener(listener) }
25+ }
26+ return keyboardState
27+ }
You can’t perform that action at this time.
0 commit comments