Flutter监听软键盘的弹出和关闭,获取键盘高度

通过WidgetsBindingObserver实现监听软键盘的弹出关闭


实现WidgetsBindingObserver

 class _State extends State<MyPage> with WidgetsBindingObserver {  
  @override
  void initState() {
    super.initState();
    // 初始化
    WidgetsBinding.instance.addObserver(this);
  }
  @override
  void dispose() {
    // 销毁
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }
  // 监听
  @override
  void didChangeMetrics() {
    super.didChangeMetrics();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      if(mounted){
        if(MediaQuery.of(context).viewInsets.bottom==0){
           // 关闭键盘
        }else{
           // 显示键盘
        }
      }
    });
  }
}
  • 注意
    如果MediaQuery.of(context).viewInsets.bottom获取键盘高度如果无论如何都是0,需设置父级Scaffold的resizeToAvoidBottomInset为false
Scaffold(
  // 子组件若需要监听键盘高度,需设置为false
  resizeToAvoidBottomInset:false,
  appBar: AppBar(
    title: '页面title',
  ),
  body: ContentPage(),//子页面中监听键盘高度
),
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容