大家好,欢迎来到IT知识分享网。
点击任意位置取消TextField焦点
监听TextField焦点,如何在单击屏幕上的任意位置后隐藏软键盘?
之前我们是这么用的:
// 清除焦点
FocusScope.of(context).requestFocus(new FocusNode());
|
要实现点击任何位置清除焦点,只需要用GestureDetector方法包裹整个布局,然后onTap方法编写此代码,即可隐藏软键盘:
new Scaffold(
body: new GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
},
child: new Container(
//rest of your code write here
)
)
|
新的方法
unfocus
从具有主要焦点的节点上删除焦点,并取消所有未完成的聚焦请求。调用requestFocus将一个请求发送到FocusManager以使该节点成为主要焦点,该节点计划以最新请求解析为树上焦点状态的更新。调用unfocus会取消已请求但尚未执行的请求。
无论此节点是否曾经请求过焦点,都可以安全地调用此方法。
如果声明了FocusNode聚焦文本字段,请使用unfocus:
final focusNode = FocusNode();
// …
focusNode.unfocus();
|
如果您尚未明确声明FocusNode,请使用“常规”方法:
FocusScope.of(context).requestFocus(new FocusNode());
|
如果您需要:1、消除键盘;2、取消焦点文本字段:
FocusScope.of(context).detach();
|
官方文档说,即使没有焦点,分离也可以安全使用。
如果您只想隐藏键盘而不丢失文本字段焦点:
import ‘package:flutter/services.dart’ show SystemChannels;
SystemChannels.textInput.invokeMethod(‘TextInput.hide’);
|
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/34360.html