【Flutter 实战】全局点击空白处隐藏键盘
老孟导读:为什么要实现点击空白处隐藏键盘?因为这是 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 &¤tFocus.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 实战】全局点击空白处隐藏键盘相关推荐
- IOS 点击空白处隐藏键盘的几种方法
IOS7 点击空白处隐藏键盘的几种方法 IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以 ...
- android 点击空白退出,Android 点击空白处隐藏键盘
方法一:使用android的分发机制(代码稍微有点多) /** * 实现点击空白处,软键盘消失事件 * @param ev * @return */ @Override public boolean ...
- ios全局点击空白隐藏keyboard
废话不多说直接上代码,一个appDelegate的分类方法 #import "AppDelegate.h" @interface AppDelegate (DismissKeybo ...
- android 获取键盘回车键事件,设置软键盘回车键显示内容,点击空白处隐藏软键盘
首先设置EditText的回车属性 drawable文件 @drawable/editcolor <?xml version="1.0" encoding="utf ...
- android 软键盘监听、隐藏、显示、点击空白处隐藏和Android KEYCODE 键值大全
android 软键盘监听.隐藏.显示.点击空白处隐藏. textView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boo ...
- swift textView字数限制,textView点击完成隐藏键盘
效果图: //MARK: -UITextViewDelegate func textView(textView: UITextView, shouldChangeTextInRange range: ...
- 项目--点击按钮显示资料,点击空白处隐藏资料
点击空白处隐藏资料 点击按钮显示资料在这里插入代码片 <!DOCTYPE html> <html lang="en"><head><met ...
- 安卓:点击空白处隐藏软键盘
建议重新封装,每个activity重新写,就显得有点烦琐 //region 点击隐藏键盘public boolean dispatchTouchEvent(MotionEvent ev) {if (e ...
- Android点击空白处隐藏软键盘
首先声明下,以下内容主要参考自http://www.2cto.com/kf/201505/401382.html 由于部分代码实际使用过程中有些问题,做了部分更改,主要在方法2: 1. 一般直接使用如 ...
最新文章
- 正则表达式(2.实例)
- python k线图 动态刷新不了_ImageButton点击之后不动态刷新页面的解决方案
- SpringBoot上传文件到本服务器 目录与jar包同级
- 品质主管每日工作需要做哪些_做微信社群运营需要用到哪些工具来铺助工作呢?...
- Java中的常量Constant
- python null怎么表示_[Python] @NotNull装饰器如何写比较好?
- MSP430G2553电子时钟实验
- 红帽linux64系统下载,红帽rhel6.5下载
- java实现聊天界面设计_java聊天室设计及实现
- 【计算机毕业设计】基于HTML+CSS+JavaScript学生宿舍管理系统
- CentOS6u9 网卡HWADDR和UUID信息重新生成和获取
- 当天使爱上吸血鬼,上帝开始哭泣
- 如何将多个excel表格合并成一个_怎么将多个pdf文件合并成一个?
- 2021年最好的Laravel教程
- Android如何判定一张图片是不是灰度的
- 哈工大C语言程序设计精髓第三周
- 安装服务器的win pe系统教程,u盘pe安装win7系统教程图解
- Apache Spark在海致大数据平台中的优化实践
- 基于QT封装的音视频播放时间轴控件
- 产品经理必备知识之如何全方位进行表单设计,一文带你通读表单设计的全过程