KotlinLeaner
08/07/2022, 5:25 PMKotlinLeaner
08/07/2022, 5:25 PM@Composable
fun PulsePressure() {
var systolicTextFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue())
}
var isSystolicTextFieldValueError by rememberSaveable { mutableStateOf(false) }
var diastolicTextFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue())
}
var isDiastolicTextFieldValueError by rememberSaveable { mutableStateOf(false) }
InputWithUnitContainer(
systolicTextFieldValue,
isError = {
isSystolicTextFieldValueError = it
},
incrementTextFieldValue = {
systolicTextFieldValue = it
})
InputWithUnitContainer(
diastolicTextFieldValue,
isError = {
isDiastolicTextFieldValueError = it
},
incrementTextFieldValue = {
diastolicTextFieldValue = it
}
)
}
KotlinLeaner
08/07/2022, 5:25 PM@Composable
fun InputWithUnitContainer(
textFieldValue: TextFieldValue,
isError: (Boolean) -> Unit,
incrementTextFieldValue: (TextFieldValue) -> Unit,
) {
val maxLength = 4
Row(
modifier = Modifier
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {
TextField(
value = textFieldValue,
singleLine = true,
onValueChange = {
if (it.text.length <= maxLength) {
incrementTextFieldValue(it)
}
isError(false)
},
isError = isError,
textStyle = RegularSlate20
)
}
}
Error on Textfield
None of the following functions can be called with the arguments supplied.
Zach Klippenstein (he/him) [MOD]
08/07/2022, 6:50 PMKotlinLeaner
08/07/2022, 6:50 PMKotlinLeaner
08/07/2022, 6:51 PMZach Klippenstein (he/him) [MOD]
08/07/2022, 6:53 PMKotlinLeaner
08/07/2022, 6:56 PMvar (isDiastolicTextFieldValueError, updateIsDiastolicTextFieldValueError) = rememberSaveable {
mutableStateOf(
false
)
}
KotlinLeaner
08/07/2022, 6:57 PMInputWithUnitContainer(
textFieldValue = diastolicTextFieldValue,
isError = isDiastolicTextFieldValueError,
updateIsError = updateIsDiastolicTextFieldValueError,
incrementTextFieldValue = {
diastolicTextFieldValue = it
}
)
KotlinLeaner
08/07/2022, 6:57 PM@Composable
fun InputWithUnitContainer(
textFieldValue: TextFieldValue,
isError: Boolean,
updateIsError: (Boolean) -> Unit,
incrementTextFieldValue: (TextFieldValue) -> Unit,
) {
...
}
KotlinLeaner
08/07/2022, 6:58 PMTextField(
value = textFieldValue,
singleLine = true,
onValueChange = {
if (it.text.length <= maxLength) {
incrementTextFieldValue(it)
}
updateIsError(false)
},
isError = isError,
textStyle = TextStyle(),
)
KotlinLeaner
08/07/2022, 6:58 PMKotlinLeaner
08/07/2022, 6:58 PMZach Klippenstein (he/him) [MOD]
08/07/2022, 9:00 PMZach Klippenstein (he/him) [MOD]
08/07/2022, 9:00 PMKotlinLeaner
08/07/2022, 10:38 PMKotlinLeaner
08/07/2022, 10:38 PMSo that's the right way to hoist state. But you might want to consider deriving the error state from the actual text
. I think so is it possible to do that in simple way. I followed this post. Can you give some code snippet?
right now you've got two sources of truth for the error state, which is going to be harder to maintain and could introduce bugs.
Can you please suggest me how can I fix this problem?
ThanksZach Klippenstein (he/him) [MOD]
08/08/2022, 4:16 PMisError = !isTextValid(text)
KotlinLeaner
08/08/2022, 4:48 PMIsError
to !isTextValid(text)
. So how can. we notifiy to TextField(isError = ?)
?Zach Klippenstein (he/him) [MOD]
08/08/2022, 4:53 PMisTextValid
reads changes.KotlinLeaner
08/08/2022, 4:54 PM