当前位置: 首页 > 编程笔记 >

Flutter 全局点击空白处隐藏键盘实战

尉迟明辉
2023-03-14
本文向大家介绍Flutter 全局点击空白处隐藏键盘实战,包括了Flutter 全局点击空白处隐藏键盘实战的使用技巧和注意事项,需要的朋友参考一下

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

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

class DismissKeyboardDemo extends StatelessWidget {
 final FocusNode focusNode = FocusNode();

 @override
 Widget 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 {
 @override
 Widget 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 {

 @override
 Widget build(BuildContext context) {
  return Scaffold(
   appBar: AppBar(),
   body: Center(
    child: TextField(),
   ),
  );
 }
}

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

到此这篇关于Flutter 全局点击空白处隐藏键盘实战的文章就介绍到这了,更多相关Flutter 全局点击空白处隐藏键盘内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍详解IOS点击空白处隐藏键盘的几种方法介绍,包括了详解IOS点击空白处隐藏键盘的几种方法介绍的使用技巧和注意事项,需要的朋友参考一下 IOS7 点击空白处隐藏键盘的几种方法,具体如下: iOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以实现点击键盘以外的空白区域来将键盘隐藏,

  • 我有一个AutoCompleteTextView,它像往常一样在用户键入3个字母后提供建议。一旦我触摸建议列表,我想隐藏软键盘一次。我在下面用表格布局所做的只是在单击除建议列表之外的任何地方时隐藏键盘。 可扩展置标语言 爪哇岛 用于自定义列表的 XML

  • 我正在使用以下方法隐藏键盘 它将输入作为“活动”,并在我点击屏幕时隐藏键盘。如果父布局没有嵌套的子布局,则工作正常。但是如果父布局有嵌套的子布局,即使我在点击嵌套的子布局时仍不使用它们。软键盘没有隐藏。 这个问题的解决方案是为嵌套的子布局创建侦听器,然后再次调用上面的方法。但是,有没有其他方法可以隐藏键盘而不设置内部子布局的侦听器。 下面是我使用的布局 在我的活动中我正在做

  • 我有以下div元素: 然后我在一个元素上有一个点击功能来隐藏上面的div: 当我隐藏div时,它会塌陷,不再占用空间。这弄乱了我的页面布局。 有没有办法隐藏div,但仍然保持它之前占用的空间?我不想改变字体颜色,因为它仍然是可选择的。

  • 我需要隐藏软键盘以响应单击按钮。我看到了一些关于这方面的帖子,我尝试了: 这很有效。但现在我有两个EditText视图。无论选择了哪个EditText,现在如何隐藏软键盘?我也试过了 ,但那不起作用... 谢谢你的帮助! 编辑:找到解决方案。贴在下面。

  • 我的目标是实现大多数消息传递应用程序(如Facebook Messenger、Viber、What's up)在显示附件表时所做的事情。如果软键盘可见并且用户想要附加某些东西,则键盘是隐藏的,附件表会在其位置呈现。 为了实现这一点,应该在根视图大小更改时更改布局。否则,在显示/隐藏键盘之前不久应用布局更改时,就会出现图形故障。 如果我可以在键盘隐藏的确切时刻更改我的布局,我可以把它做好。我尝试过使

  • 本文向大家介绍Android开发之完全隐藏软键盘的方法,包括了Android开发之完全隐藏软键盘的方法的使用技巧和注意事项,需要的朋友参考一下 隐藏软键盘一直是我头痛的事情,没有找到一种真正能隐藏的方法。点击EditText的时候总是弹出软键盘。-----杯具 杯具(一): 杯具(二): 杯具(三): 一个一个尝试,这个参数终于把软键盘隐藏了: 洗具(一): 以上所述是小编给大家介绍的Androi

  • 问题内容: 我正在为优惠券公司开发前端站点,并且我有一个页面,用户只需要输入电话号码和花费的$$。我们想出了一个有趣的内置Java脚本的屏幕键盘,该键盘易于使用且速度很快。但是,我正在寻找一种解决方案,以防止用户聚焦并在这些字段中输入文本/数字时弹出软键盘。 我知道HTML5提出的“数字/电话/电子邮件”类型属性。但是,冒着听起来发疯的风险,我真的只想使用屏幕键盘即可。 注意:此网站主要针对平板电