我是新手。我有一个包含联系人列表(姓名,电话,地址)的项目,当用户点击联系人时,我要将他发送到编辑表单,我想用联系人数据填充表单。 我正在使用文本字段作为输入,并使用例如widget.contact.data ['name']通过小部件获取数据。 我找不到这个问题的答案。
答案 0 :(得分:2)
有两种方法可以从TextField访问文本,如Flutter的docs所示。
第一个是通过onChanged回调,该回调的参数是当前文本。
TextField(
onChanged: (text) {
// do what you want with the text
},
);
要对文本进行更高级的处理(包括从build()
方法外部访问文本),可以使用TextEditingController。
final _controller = TextEditingController();
然后您可以将其链接到您的TextField:
TextField(
// other parameters
controller: _controller,
);
别忘了处理它!
@override
void dispose() {
// other dispose methods
_controller.dispose();
super.dispose();
}
现在,您可以通过访问_controller.text
的值或对其进行修改来设置或获取文本。例如:
获取:print(_controller.text);
设置:_controller.text = 'newText' // now the TextField will have 'newText' written
或者您可以使用addListener
收听更改,因此无论何时更新文本,都会调用您选择的功能:
@override
void initState() {
super.initState();
_controller.addListener(_handleText);
// other code here
}
_handleText() {
// do what you want with the text, for example:
print(_controller.text);
}