老孟导读:为什么要实现点击空白处隐藏键盘?因为这是 iOS 平台的默认行为,Android 平台由于其弹出的键盘右上角默认带有关闭键盘的按钮,所以点击空白处不会隐藏键盘。

对于单个页面来说,通过为 TextField 添加 focusNode,点击空白处时使 TextField 失去焦点,实现如下:

class DismissKeyboardDemo extends StatelessWidget {final FocusNode focusNode = FocusNode();@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(),body: GestureDetector(onTap: () {focusNode.unfocus();},child: Container(color: Colors.transparent,alignment: Alignment.center,child: TextField(focusNode: focusNode,),),),);}
}

当 App 中有多个页面多个 TextField 时,此方式会增加大量重复的代码,因此全局添加点击空白处的监听:

class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo',builder: (context, child) => Scaffold(body: GestureDetector(onTap: () {FocusScopeNode currentFocus = FocusScope.of(context);if (!currentFocus.hasPrimaryFocus &&currentFocus.focusedChild != null) {FocusManager.instance.primaryFocus.unfocus();}},child: child,),),home: DismissKeyboardDemo(),);}
}

也可以使用如下方式隐藏键盘:

SystemChannels.textInput.invokeMethod('TextInput.hide');

修改 DismissKeyboardDemo 页面:

class DismissKeyboardDemo extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(),body: Center(child: TextField(),),);}
}

效果和上面是一样的,同样可以实现点击空白处隐藏键盘。

交流

老孟Flutter博客地址(330个控件用法):http://laomengit.com

欢迎加入Flutter交流群(微信:laomengit)、关注公众号【老孟Flutter】:

【Flutter 实战】全局点击空白处隐藏键盘相关推荐

  1. IOS 点击空白处隐藏键盘的几种方法

    IOS7 点击空白处隐藏键盘的几种方法 IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以 ...

  2. android 点击空白退出,Android 点击空白处隐藏键盘

    方法一:使用android的分发机制(代码稍微有点多) /** * 实现点击空白处,软键盘消失事件 * @param ev * @return */ @Override public boolean  ...

  3. ios全局点击空白隐藏keyboard

    废话不多说直接上代码,一个appDelegate的分类方法 #import "AppDelegate.h" @interface AppDelegate (DismissKeybo ...

  4. android 获取键盘回车键事件,设置软键盘回车键显示内容,点击空白处隐藏软键盘

    首先设置EditText的回车属性 drawable文件 @drawable/editcolor <?xml version="1.0" encoding="utf ...

  5. android 软键盘监听、隐藏、显示、点击空白处隐藏和Android KEYCODE 键值大全

    android 软键盘监听.隐藏.显示.点击空白处隐藏. textView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boo ...

  6. swift textView字数限制,textView点击完成隐藏键盘

    效果图: //MARK: -UITextViewDelegate func textView(textView: UITextView, shouldChangeTextInRange range: ...

  7. 项目--点击按钮显示资料,点击空白处隐藏资料

    点击空白处隐藏资料 点击按钮显示资料在这里插入代码片 <!DOCTYPE html> <html lang="en"><head><met ...

  8. 安卓:点击空白处隐藏软键盘

    建议重新封装,每个activity重新写,就显得有点烦琐 //region 点击隐藏键盘public boolean dispatchTouchEvent(MotionEvent ev) {if (e ...

  9. Android点击空白处隐藏软键盘

    首先声明下,以下内容主要参考自http://www.2cto.com/kf/201505/401382.html 由于部分代码实际使用过程中有些问题,做了部分更改,主要在方法2: 1. 一般直接使用如 ...

最新文章

  1. 正则表达式(2.实例)
  2. python k线图 动态刷新不了_ImageButton点击之后不动态刷新页面的解决方案
  3. SpringBoot上传文件到本服务器 目录与jar包同级
  4. 品质主管每日工作需要做哪些_做微信社群运营需要用到哪些工具来铺助工作呢?...
  5. Java中的常量Constant
  6. python null怎么表示_[Python] @NotNull装饰器如何写比较好?
  7. MSP430G2553电子时钟实验
  8. 红帽linux64系统下载,红帽rhel6.5下载
  9. java实现聊天界面设计_java聊天室设计及实现
  10. 【计算机毕业设计】基于HTML+CSS+JavaScript学生宿舍管理系统
  11. CentOS6u9 网卡HWADDR和UUID信息重新生成和获取
  12. 当天使爱上吸血鬼,上帝开始哭泣
  13. 如何将多个excel表格合并成一个_怎么将多个pdf文件合并成一个?
  14. 2021年最好的Laravel教程
  15. Android如何判定一张图片是不是灰度的
  16. 哈工大C语言程序设计精髓第三周
  17. 安装服务器的win pe系统教程,u盘pe安装win7系统教程图解
  18. Apache Spark在海致大数据平台中的优化实践
  19. 基于QT封装的音视频播放时间轴控件
  20. 产品经理必备知识之如何全方位进行表单设计,一文带你通读表单设计的全过程

热门文章

  1. Java格式化json格式文本数据
  2. Proteus 创建可以仿真的元件 - Proteus建模技术
  3. 企业,绩效管理为何力不从心
  4. 什么是UNIX时间戳? 时间戳有什么用?
  5. 佟刚老师javaweb笔记(二)
  6. CAD文件怎么转成低版本?教你两个小妙招
  7. MyISAM 与 InnoDB 的区别是什么?
  8. 什么是网络号,主机号,主机地址,网络地址,主机地址,子网号,子网地址
  9. STM32F4 FPU和DSP库使用
  10. 最新支持android的手机型号,android8.0国产手机有哪些 哪些手机支持android 8.0