如何从TextFormField
焦点中删除所有文本?这在 JavaScript 中非常简单:onfocus="this.value=''";
. 我不想使用这样的按钮:
FlatButton(onPressed: () => _textFieldcontroller.clear(), ...)
Run Code Online (Sandbox Code Playgroud)
cre*_*not 11
您可以FocusNode
与StatefulWidget
.
我们FocusNode
在类中保留一个对象:
FocusNode _focusNode;
Run Code Online (Sandbox Code Playgroud)
在我们的构造函数中TextFormField
,我们必须_focusNode
作为参数传递:
TextFormField(focusNode: _focusNode, ...
Run Code Online (Sandbox Code Playgroud)
现在我们可以向我们添加一个监听器,FocusNode
当我们的焦点TextFormField
更新时,它总是会被调用。在里面,我们可以检查我们是否FocusNode
有焦点,并根据它采取行动。
_focusNode.addListener(() {
if (_focusNode.hasFocus) _textFieldController.clear();
});
Run Code Online (Sandbox Code Playgroud)
在小部件中:
class ExampleWidget extends StatefulWidget {
@override
_ExampleWidgetState createState() => _ExampleWidgetState();
}
class _ExampleWidgetState extends State<ExampleWidget> {
FocusNode _focusNode;
TextEditingController _textFieldController;
@override
void initState() {
_focusNode = FocusNode();
_focusNode.addListener(() {
if (_focusNode.hasFocus) _textFieldController.clear();
});
super.initState();
}
@override
Widget build(BuildContext context) => TextFormField(focusNode: _focusNode, controller: _textFieldController, ...);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13582 次 |
最近记录: |