byValue

Function

Common
fun InputTransformation.byValue(
    transformation: (current: CharSequence, proposed: CharSequence) -> CharSequence
): InputTransformation

Creates an InputTransformation from a function that accepts both the current and proposed TextFieldCharSequence and returns the TextFieldCharSequence to use for the field.

transformation can return either current, proposed, or a completely different value.

The selection or cursor will be updated automatically. For more control of selection implement InputTransformation directly.

Code Examples

BasicTextFieldInputTransformationByValueChooseSample

@Composable
fun BasicTextFieldInputTransformationByValueChooseSample() {
    val state = remember { TextFieldState() }
    BasicTextField(
        state,
        // Reject whitespace.
        inputTransformation =
            InputTransformation.byValue { current, proposed ->
                if ("""\s""".toRegex() in proposed) current else proposed
            },
    )
}

BasicTextFieldInputTransformationByValueReplaceSample

@Composable
fun BasicTextFieldInputTransformationByValueReplaceSample() {
    val state = remember { TextFieldState() }
    BasicTextField(
        state,
        // Convert tabs to spaces.
        inputTransformation =
            InputTransformation.byValue { _, proposed ->
                proposed.replace("""\t""".toRegex(), "  ")
            },
    )
}