抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

通过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(),
),
...

评论