先上一段样板代码
var text by remember { mutableStateOf("") }
TextField(
value = text,
onValueChange = { newValue ->
text = newValue // newValue 传递给了闭包,然后被赋值给 text
}
)
我之前一直以为我在TextField输入框里输入的是text变量,但其实不是。
首先划分一下职责
1.value负责展示文本数据
2.onValueChange函数负责更新输入框文本数据
本质就是我们输入的文字本质上是newValue,然后再onValueChange里我们自定义逻辑是把newVlaue的值赋给了text变量,也即是把我们的输入文本数据赋给text;
然后text本身又赋给value让textfield展示数据
所以整个流程是这个样子的:
输入数据->newvalue->text->value
如果text本身不是可观察数据那么Compose就无法更新value的值,所以无法展示新数据,因此我们用var text by remember{mutablestateof("")}来进行初始化以及将其变为可观察数据来更新value值