我有一个小部件,它有一个textfield,我正在从aStreamBuilder
初始化,试图使用bloc模式。一个接触模型正在通过流进入。这将开始填充文本字段。我的问题是,在用户更新文本字段,然后按下保存按钮后读取值。如何从文本字段读取值。我举了一个简单的例子来说明我想做什么。
void getTextValues() {
//???
}
@override
Widget build(BuildContext context) {
return StreamBuilder<Contact>(
stream: bloc.getContact,
builder: (context, contact) {
return Column(
children: <Widget>[
TextField(
controller: TextEditingController(text: contact.data.name),
),
new RaisedButton(
padding: const EdgeInsets.all(8.0),
textColor: Colors.white,
color: Colors.blue,
onPressed: getTextValues,
child: new Text("Save"),
),
],
);
},
);
}
我认为我可以声明一个texteeditingController并将其分配给Controller属性,但我看不到一种方法可以从streambuilder中为其提供初始值。我是不是错过了什么?
TextEditingController nameController = TextEditingController();
....
controller: nameController,
最佳答案
我想我可以声明一个文本编辑控制器并将其分配给
控制器属性,但我看不出一种方法来给它一个初始值
来自streambuilder的值。
有办法。将生成器代码更改为:
builder: (context, contact) {
nameController.value = TextEditingValue(text: contact.data.name);
return Column(
children: <Widget>[
TextField(
controller: nameController,
),
new RaisedButton(
padding: const EdgeInsets.all(8.0),
textColor: Colors.white,
color: Colors.blue,
onPressed: getTextValues,
child: new Text("Save"),
),
],
);
},
关于dart - 从Flutter TextField读取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55544254/