瀏覽代碼

set keyboard hide on search Button on search Bar on both the screens

Khubaib 10 月之前
父節點
當前提交
62144c35be

二進制
app/release/app-release.apk


+ 15 - 8
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -75,6 +75,7 @@ import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalFocusManager
+import androidx.compose.ui.platform.LocalSoftwareKeyboardController
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
@@ -121,6 +122,7 @@ fun ServerList(
     val serverListViewModel = serverListViewModelSplash
     val basePreferenceHelper = BasePreferenceHelper(context)
     isAlphabetList.value = basePreferenceHelper.getFilterList() != filterList[0]
+    searchListViewModelSplash.setCountriesListEmpty()
     Box(
         modifier = Modifier
             .fillMaxSize()
@@ -763,6 +765,8 @@ fun ColumnScope.ShowSearchBar(
 //    var isActive by remember { mutableStateOf(false) }
 //    val searchText = searchListViewModel.searchText.collectAsState().value
 
+    val keyboardController = LocalSoftwareKeyboardController.current
+    val focusManager = LocalFocusManager.current
     val searchListViewModel = searchListViewModelSplash
     val scope = rememberCoroutineScope()
     var searchText1 by remember { mutableStateOf("") }
@@ -773,12 +777,13 @@ fun ColumnScope.ShowSearchBar(
 
     LaunchedEffect(key1 = searchText1) {
         Log.d("test_search_logic", "LaunchedEffect $searchText1")
-        delay(300L)
+        val delay = if (searchText1.isEmpty()) 0L else 300L
+        delay(delay)
         searchListViewModel.getCountries(searchText1, true)
     }
-    if (isActive == false) {
-        searchText1 = ""
-    }
+//    if (isActive == false) {
+//        searchText1 = ""
+//    }
     DockedSearchBar(
         query = searchText1,
         onQueryChange = {
@@ -788,9 +793,11 @@ fun ColumnScope.ShowSearchBar(
 //            }
         },
         onSearch = {
-            scope.launch {
-                searchListViewModel.isActiveChange(false)
-            }
+//            scope.launch {
+//                searchListViewModel.isActiveChange(false)
+//            }
+//            focusManager.clearFocus()
+            keyboardController?.hide()
         },
         active = isActive!!,
         onActiveChange = {
@@ -814,7 +821,7 @@ fun ColumnScope.ShowSearchBar(
             )
         },
         trailingIcon = {
-            if (!isActive) {
+            if (searchText1.isEmpty()) {
                 IconButton(onClick = { isFilter = true }) {
                     Icon(
                         painter = painterResource(id = R.drawable.filter3x),

+ 7 - 3
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/SettingsScreen.kt

@@ -7,6 +7,7 @@ import android.os.Build
 import android.os.Bundle
 import android.os.Handler
 import android.util.Log
+import android.widget.Toast
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.LocalOverscrollConfiguration
@@ -67,6 +68,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalSoftwareKeyboardController
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
@@ -786,6 +788,7 @@ fun ColumnScope.AddRowSettingsSmart(
     var isAnySpecificSheetOpen by remember { mutableStateOf(false) }
     val context = LocalContext.current
     val basePreferenceHelper = BasePreferenceHelper(context)
+    val keyboardController = LocalSoftwareKeyboardController.current
 
 //    if (isRowShown) { }
 
@@ -994,9 +997,9 @@ fun ColumnScope.AddRowSettingsSmart(
                             val query = searchText1.ifEmpty { "settings_screen" }
                             searchListViewModel.getCountries(query, true)
                         }
-                        if (isActive == false) {
-                            searchText1 = ""
-                        }
+//                        if (isActive == false) {
+//                            searchText1 = ""
+//                        }
                         DockedSearchBar(
                             query = searchText1,
                             onQueryChange = {
@@ -1009,6 +1012,7 @@ fun ColumnScope.AddRowSettingsSmart(
                                 scope.launch {
                                     searchListViewModel.isActiveChange(state = false, true)
                                 }
+//                                keyboardController?.hide()
                             },
                             active = isActive!!,
                             onActiveChange = {

+ 8 - 3
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/SearchListViewModel.kt

@@ -51,12 +51,17 @@ class SearchListViewModel constructor(
         Log.d("test_search","STC_"  + countriesList.value?.size.toString())
     }
 
+    fun setCountriesListEmpty() {
+        val emptyArray: ArrayList<Server> = ArrayList<Server>()
+        _countriesList.value = emptyArray
+    }
+
 
     suspend fun isActiveChange(state: Boolean, isFromSettings: Boolean = false) {
         _isActive.value = state
-        if (_isActive.value == false) {
-            if (isFromSettings) searchTextChange("settings_screen") else searchTextChange("")
-        }
+//        if (_isActive.value == false) {
+//            if (isFromSettings) searchTextChange("settings_screen") else searchTextChange("")
+//        }
     }
 
     private var debounceJob: Job? = null