Flutter 颤振中的文本字段编辑
我有一个文本字段,其中包含数据库中的一些数据(用户名)。我应该允许用户编辑他的名字,然后保存在数据库中 我的问题是我无法编辑文本文件。这是我的密码。请帮忙Flutter 颤振中的文本字段编辑,flutter,Flutter,我有一个文本字段,其中包含数据库中的一些数据(用户名)。我应该允许用户编辑他的名字,然后保存在数据库中 我的问题是我无法编辑文本文件。这是我的密码。请帮忙 var nameController = TextEditingController(); TextFormField( controller: nameController=TextEditingController(text:snapshot.data[index].name,),
var nameController = TextEditingController();
TextFormField(
controller: nameController=TextEditingController(text:snapshot.data[index].name,),
onChanged: (name){
setState(() {
nameController.text = name;
});
},
)
如何编辑文本
当用户键入时,文本将自动显示。
无需调用setState
或textededitingcontroller.text
再次设置文本
例如:
TextFormField(
decoration: InputDecoration(
labelText: 'Enter your username'
),
);
如何在文本更改时保存到Db。
有几种选择
textEditingController.text
vale保存到数据库onChanged:(名称)
callback。但请注意,此回调将
当用户键入文本并执行DB时,调用过于频繁
对每个文本更改事件进行操作可能不是一个好主意。但是,是的,您可以使用RxDart强大的API来消除事件的影响,找出用户何时停止键入,并使用该值保存到数据库中李>
如何从文本字段读取文本?
官方文件用一些很好的例子详细解释了这一点
如何为文本字段指定初始值?
为此,您可以使用文本编辑控制器
final TextEditingController _controller = new TextEditingController();
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
希望这有帮助。文本字段的初始值来自DB。如果用户希望编辑其姓名,则更新后的姓名应存储在数据库中。我已经调用了save函数来执行此操作。但是,当我单击“保存”按钮时,我的TextField值正在刷新并变为初始值。@raj在init state方法中,您可以使用初始值初始化控制器。另外,在save方法中,使用相同的控制器对象读取当前值,例如:controller。文本。你能解释一下你到底在哪里遇到困难吗?更改文本字段值后,当我单击键盘上的“完成”按钮时,它只显示以前的值(更改之前,我从DB检索到的值)