如何从焦点上的 TextFormField
中删除所有文本?这在JavaScript中非常容易:onfocus="this.value=''";
。我不想使用这样的按钮:
FlatButton(onPressed: () => _textFieldcontroller.clear(), ...)
最佳答案
您可以将 FocusNode
与 StatefulWidget
结合使用。
我们在类中保留了一个 FocusNode
对象:
FocusNode _focusNode;
在
TextFormField
的构造函数中,我们必须将 _focusNode
作为参数传递:TextFormField(focusNode: _focusNode, ...
现在我们可以向
FocusNode
添加一个监听器,当 TextFormField
的焦点更新时,它总是会被调用。在里面,我们可以检查我们的 FocusNode
是否有焦点并根据它采取行动。_focusNode.addListener(() {
if (_focusNode.hasFocus) _textFieldController.clear();
});
在小部件中:
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, ...);
}
关于dart - Flutter - 如何清除焦点上的文本字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54428029/