Flutter TextField焦点跳出软键盘,隐藏软键盘失去焦点,小米等部分手机无法失去焦点

如图片,弹窗中带有TextField,要求弹窗出来就跳出软键盘,这个简单,设置TextField 属性autofocus:true,但是如果让软键盘消失,再次点击textfield让软键盘弹出,就需要在软键盘消失的时候让TextField失去焦点,那就需要监控软键盘出现和消失的监听。

class PasswordInputTextFieldState with WidgetsBindingObserver

void initState() {

WidgetsBinding.instance.addObserver(this);

}

@override

void didChangeMetrics() {

super.didChangeMetrics();

  WidgetsBinding.instance.addPostFrameCallback((_) {

 if(MediaQuery.of(context).viewInsets.bottom==0){

      print("=============关闭键盘==============");

 widget.node.unfocus();

}else{

      print("=============显示键盘==============");

    }

});

可是有些手机会失败,比如小米、OPPO等手机,原因是这些手机软键盘弹出的时候,会先调用关闭键盘监听,这就会导致刚弹出键盘就消失了 因为失去了焦点。因此需要立一个Flag解决这个问题。

// 当前键盘是否是激活状态

  boolisKeyboardActived;

@override

void didChangeMetrics() {

super.didChangeMetrics();

  WidgetsBinding.instance.addPostFrameCallback((_) {

//当前是安卓系统并且在焦点聚焦的情况下

    if(MediaQuery.of(context).viewInsets.bottom==0){

//关闭键盘

      print("=============关闭键盘==============");

      if (isKeyboardActived) {

isKeyboardActived =false;

        widget.node.unfocus();

      }

}else{

isKeyboardActived =true;

      print("=============显示键盘==============");

      //显示键盘

    }

});

} 解决问题!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容