目前,我知道使用此代码隐藏软键盘的方法,通过任何小部件的 onTap
方法。
FocusScope.of(context).requestFocus(new FocusNode());
但我想通过单击 TextField 外部或屏幕上的任何位置来隐藏软键盘。 flutter
中是否有任何方法可以做到这一点?
最佳答案
你做错了,试试这个简单的方法来隐藏软键盘。您只需将整个屏幕包裹在 GestureDetector
方法和 onTap
方法中编写此代码。
FocusScope.of(context).requestFocus(new FocusNode());
这是完整的例子:
new Scaffold(
body: new GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
},
child: new Container(
//rest of your code write here
)
)
更新(2021 年 5 月)
return GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: Scaffold(
appBar: AppBar(
title: Text('Login'),
),
body: Body(),
),
);
即使您触摸 AppBar,这也会起作用,new
是 optional in Dart 2 . FocusManager.instance.primaryFocus
将返回小部件树中当前具有主要焦点的节点。
Conditional access in Dart with null-safety
https://stackoverflow.com/questions/51652897/