我想为文本字段提供一个初始值,并重新绘制一个空值以清除文本。用Flutter的api实现这一点的最佳方法是什么?
当前回答
我在这里见过很多方法。然而,我认为这比其他答案更有效或至少更简洁。
TextField(
controller: TextEditingController(text: "Initial Text here"),
)
其他回答
如果你使用TextEditingController只需要在你的类中使用这一行。
TextEditingController txtController = TextEditingController(text: 'Initial value')
TextField(
controller: txtController,
);
如果你不使用TextEditingController就去initialValue
TextFormField(
initialValue: 'your initial text',
);
完整代码
class _TestScreen extends State<Test> {
TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = new TextEditingController(text: 'Initial value');
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
TextField( // First method
initialValue: "Initial text"
),
TextField( // Second method
controller: _controller, // Controller has the initial value
),
],
);
}
}
这可以通过使用TextEditingController来实现。
要有一个初始值,你可以加上
TextEditingController _controller = TextEditingController(text: 'initial value');
or
如果你正在使用TextFormField,你有一个initialValue属性。它基本上自动地将这个initialValue提供给小部件。
TextFormField(
initialValue: 'initial value'
)
清除文本可以使用 _controller.clear()方法。
简单高效的方法
分配控制器到你的TextFormField或TextField和在initState你可以初始化它像这样的初始值
_controller = TextEditingController(text: 'Your initial value');
如果你想处理多个textinput,因为@MRT在接受的答案的评论中要求,你可以创建一个函数,接受一个初始值,并返回一个TextEditingController,像这样:
initialValue(val) {
return TextEditingController(text: val);
}
然后,将这个函数设置为TextInput的控制器,并像这样提供它的初始值:
controller: initialValue('Some initial value here....')
您可以为其他textinput重复此操作。
如果你正在使用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