Flutter-監聽輸入框獲取焦點合失去焦點事件

监听输入框

FocusNode _focusNode = FocusNode();

initState()

void initState() {
    _focusNode.addListener(() {
      if (_focusNode.hasFocus) {
        setState(() {
          _focusView = true;
        });
      }else{
        setState(() {
          _focusView = false;
        });
      }
    });
    super.initState();
  }
TextFormField添加
focusNode: _focusNode,

 來源:https://www.uedbox.com/post/65066/

点击任何位置关闭软键盘

Scaffold(
body: GestureDetector(
  onTap: () {
    FocusScope.of(context).requestFocus(new FocusNode());
  },
child: new Container(
   //rest of your code write here
    )
 )

从具有主要焦点的节点上删除焦点,并取消所有未完成的聚焦请求。调用requestFocus将一个请求发送到FocusManager以使该节点成为主要焦点,该节点计划以最新请求解析为树上焦点状态的更新。调用unfocus会取消已请求但尚未执行的请求。

无论此节点是否曾经请求过焦点,都可以安全地调用此方法。

如果声明了FocusNode聚焦文本字段,请使用unfocus:

final focusNode = FocusNode();
// ...
focusNode.unfocus();
原文地址:https://www.cnblogs.com/ssjf/p/12565245.html