Use TextFieldState in BasicTextField where applicable (#1201)

Co-authored-by: p
(cherry picked from commit bec549cc444328c8b46594c67a84d25dcc1aca6f)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSearchScreen.kt
This commit is contained in:
AntsyLich
2024-09-07 14:11:14 +06:00
committed by Jobobby04
parent b98e198e15
commit 51229ca511
5 changed files with 38 additions and 47 deletions
@@ -16,6 +16,8 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.input.TextFieldLineLimits
import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -25,6 +27,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
@@ -37,7 +40,6 @@ import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
@@ -141,9 +143,9 @@ private fun <T> WheelPicker(
var showManualInput by remember { mutableStateOf(false) }
if (showManualInput) {
var value by remember {
val value = rememberSaveable(saver = TextFieldState.Saver) {
val currentString = items[internalIndex].toString()
mutableStateOf(TextFieldValue(text = currentString, selection = TextRange(currentString.length)))
TextFieldState(initialText = currentString, initialSelection = TextRange(currentString.length))
}
val scope = rememberCoroutineScope()
@@ -164,9 +166,8 @@ private fun <T> WheelPicker(
showManualInput = false
}
},
value = value,
onValueChange = { value = it },
singleLine = true,
state = value,
lineLimits = TextFieldLineLimits.SingleLine,
keyboardOptions = KeyboardOptions(
keyboardType = manualInputType!!,
imeAction = ImeAction.Done,