我想为文本字段提供一个初始值,并用一个空值重绘它以清除文本。用Flutter的API做到这一点的最佳方法是什么?
我想为文本字段提供一个初始值,并用一个空值重绘它以清除文本。用Flutter的API做到这一点的最佳方法是什么?
Answers:
(从邮件列表中。我没有给出这个答案。)
class _FooState extends State<Foo> {
TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = new TextEditingController(text: 'Initial value');
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
new TextField(
// The TextField is first built, the controller has some initial text,
// which the TextField shows. As the user edits, the text property of
// the controller is updated.
controller: _controller,
),
new RaisedButton(
onPressed: () {
// You can also use the controller to manipuate what is shown in the
// text field. For example, the clear() method removes all the text
// from the text field.
_controller.clear();
},
child: new Text('CLEAR'),
),
],
);
}
}
您可以使用TextFormField
代替TextField
,然后使用initialValue
属性。例如
TextFormField(initialValue: "I am smart")
您不必在小部件作用域中定义单独的变量,只需内联即可:
TextField(
controller: TextEditingController()..text = 'Your initial value',
onChanged: (text) => {},
)
如果您使用的是TextEditingController,则将文本设置为它,如下所示
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
如果您不使用任何TextEditingController,则可以直接使用initialValue,如下所示
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
有关更多参考,请参见TextEditingController
text
属性文档将初始值设置为属性是否是一个好主意TextEditingController.text
:设置此属性将通知此TextEditingController的所有侦听器它们需要更新(它调用notifyListeners)。因此,仅应在帧之间设置此值,例如响应用户操作,而不是在构建,布局或绘制阶段。(api.flutter.dev/flutter/widgets/TextEditingController/text.html)
TextEdittingController _controller = new TextEdittingController(text: "your Text");
要么
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
可以使用来实现TextEditingController
。
要具有初始值,您可以添加
TextEditingController _controller = TextEditingController(text: 'initial value');
要么
如果您使用的TextFormField
是initialValue
那里,则有一个属性。这基本上initialValue
是自动将其提供给控制器的。
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'initial value'
)
要清除文本,您可以使用
_controller.clear()
方法。
如果您尚未找到答案,也未找到其他答案的朋友,请查看该InputDecoration
字段的hintText:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...