flutter如何监听键盘收起事件
在Flutter开发中,如何监听Android/iOS软键盘的收起事件?目前使用FocusNode可以检测键盘弹出,但键盘收起时没有触发回调。尝试过WidgetsBindingObserver的didChangeMetrics,但不够精准。有没有可靠的跨平台方案来捕获键盘收起动作?
        
          2 回复
        
      
      
        在Flutter中,使用FocusNode监听键盘收起事件。通过FocusNode的unfocus方法或FocusScope.of(context).unfocus()触发收起,结合Focus或FocusScope的onFocusChange回调监听焦点变化。
更多关于flutter如何监听键盘收起事件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,可以通过 FocusNode 监听键盘的收起事件。以下是具体实现方法:
- 创建 FocusNode:在 Widget 的 
initState中初始化 FocusNode。 - 添加监听器:为 FocusNode 添加监听器,当焦点状态变化时触发回调。
 - 管理生命周期:在 
dispose中释放 FocusNode 以避免内存泄漏。 
示例代码:
import 'package:flutter/material.dart';
class KeyboardListenerExample extends StatefulWidget {
  @override
  _KeyboardListenerExampleState createState() => _KeyboardListenerExampleState();
}
class _KeyboardListenerExampleState extends State<KeyboardListenerExample> {
  FocusNode _focusNode = FocusNode();
  @override
  void initState() {
    super.initState();
    _focusNode.addListener(() {
      if (!_focusNode.hasFocus) {
        // 键盘收起时的处理逻辑
        print('键盘已收起');
      }
    });
  }
  @override
  void dispose() {
    _focusNode.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TextField(
          focusNode: _focusNode,
          decoration: InputDecoration(hintText: '点击输入'),
        ),
      ),
    );
  }
}
说明:
- 当 
TextField失去焦点时(例如用户点击其他区域),键盘会自动收起,触发监听器中的逻辑。 - 此方法适用于监听单个输入框的焦点变化,若需全局监听,可结合 
FocusScope使用。 
        
      
            
            
            
