android 大纲文本域:检查文本是否未更改

6pp0gazn  于 2023-02-06  发布在  Android
关注(0)|答案(1)|浏览(117)

我有一个OutlineTextField,我正在编辑和更新它通过调用一个API点击保存按钮。现在我想如果用户不改变文本,API调用不应该发生,然后点击保存,不应该有任何API调用,它应该得到上一个屏幕。下面是我的代码片段:

OutlinedTextField(
    value = value,
    modifier = modifier,
    onValueChange = onValueChange,
    placeholder = PlaceholderComponent
 )

我通过检查初始视图模型文本解决了这个问题。

qkf9rpyu

qkf9rpyu1#

如果我已经清楚地理解了这个问题,正如@Gabriele Mariotti建议的那样,您可以存储文本字段的先前值,然后在单击按钮时将其与文本字段本身中的实际值进行比较。
可以使用Composable函数来安排代码,如下所示:

@Composable
fun SaveButton(
    modifier: Modifier = Modifier
) {
    var currentValue by remember { mutableStateOf("") }
    var previousValue by remember { mutableStateOf(currentValue) }
    val context = LocalContext.current

    Row(
        verticalAlignment = Alignment.CenterVertically,
        horizontalArrangement = Arrangement.SpaceEvenly,
        modifier = Modifier.fillMaxSize()
    ) {
        OutlinedTextField(
            value = currentValue,
            modifier = modifier,
            onValueChange = {
                currentValue = it
            }
        )

        Button(onClick = {
            if (currentValue != previousValue) {
                Toast.makeText(context, "API request started", Toast.LENGTH_SHORT).show()
                previousValue = currentValue
                // Handle API request
            } else {
                Toast.makeText(context, "The text has not changed. Returning to the previous screen...", Toast.LENGTH_LONG).show()
                // Handle on back screen
            }
        }) {
            Text(text = "Save")
        }
    }
}

相关问题