flutter-监听键盘弹出和回收

2020-12-08  本文已影响0人  ChaosHeart

监听软键盘的弹出和回收:

//继承 WidgetsBindingObserver 类
class BottomKeyboardInputState extends State<BottomKeyboardInput> with WidgetsBindingObserver {  

  @override
  void initState() {
    // TODO: implement initState

    super.initState();
    //初始化
    WidgetsBinding.instance.addObserver(this);
   }

  @override
  void didChangeMetrics() {
    super.didChangeMetrics();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      setState(() {

          if(MediaQuery.of(context).viewInsets.bottom==0){
            //关闭键盘

           }else{
            //显示键盘
          }

      });
    });
  }

   @override
  void dispose() {
    // TODO: implement dispose
    //销毁
    WidgetsBinding.instance.removeObserver(this);

    super.dispose();
  }

}

注意:

当MediaQuery.of(context).viewInsets.bottom获取键盘高度是0, 就查看父级组件的高度

 child: Scaffold(
              resizeToAvoidBottomInset:false,//只要子组件需要监听键盘高度 ,父组件的所有该属性都应该设置false
              appBar: CenterTitleAppBar(
                title: '页面title',
              ),
              body: ContentPage(),
 ),

参考:

https://blog.csdn.net/weixin_34082177/article/details/91370675

上一篇下一篇

猜你喜欢

热点阅读