首页 > 其他分享 >flutter 效果实现 —— 全局点击空白处隐藏键盘

flutter 效果实现 —— 全局点击空白处隐藏键盘

时间:2022-08-21 14:23:15浏览次数:66  
标签:focusNode 键盘 点击 context child flutter 空白处

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

单个页面,可以这样做:

class DismissKeyboardPage 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,
          ),
        ),
      ),
    );
  }
}

该方法的缺点是每个 TextField 节点都得挂载 focusNode。而不指定的话,会有默认的 focusNode,可以通过下面的方法获取。

全局设置点击空白处隐藏键盘:

class App extends StatelessWidget {
  App({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'DismissKeyboard Example',
      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: DismissKeyboardPage(),
    );
  }
}

标签:focusNode,键盘,点击,context,child,flutter,空白处
From: https://www.cnblogs.com/lemos/p/16609933.html

相关文章

  • 64位内开发第二十三讲,分层过滤驱动-键盘过滤
    目录64位内开发第二十三讲,分层过滤驱动-键盘过滤一丶键盘过滤的两种方式1.1第一种方式驱动对象方式绑定1.2第二种方式,直接设备类型绑定.1.3效果64位内开发第二十三......
  • flutter 效果实现 —— sliver 固定
    效果:说明:绿色块在向上滑动,距离顶部103的高度(即AppBar下面)时固定代码:classPinnedSliverPageextendsStatefulWidget{constPinnedSliverPage({Key?key}):......
  • 认识键盘
    学习打字先要了解键盘,把键盘的每个按键的功能都了解清楚了,后面打字才会更得心应手。常见的键盘有101、104键等若干种。为了便于记忆,按照功能的不同,我们把这101个键划分成......
  • flutter系列之:widgets,构成flutter的基石
    目录简介StatelessWidget和StatefulWidgetStatelessWidget详解StatefulWidget详解总结简介flutter中所有的组件都是由widgets组成的,flutter中有各种各样的widgets,这些wid......
  • Android 隐藏和显示软键盘
    1publicstaticvoidhideKeyboard(Viewview){2InputMethodManagerimm=(InputMethodManager)view.getContext()3.getSystemSer......
  • flutter 杂项 —— Stateful 与 Stateless 的更新
    一、使用StatefulBuilder单独更新某个组件的状态示例:awaitshowDialog<void>(context:context,builder:(BuildContextcontext){int?selectedRadio=0......
  • 键盘快捷键
    常用的电脑快捷键:容东2022/8/17安全选项界面:CTRL+ALT+DELETE浏览器-切换页面:CTRL+TAB任务管理器:CTRL+SHIFT+ESC控制面板:WIN+R输入contrl截图:WIN+SHIFT+S浏览器-历史记录:CT......
  • Python修改windows键盘映射
    新电脑环境的处理之一是修改键盘映射,主Ctrl键使用CapsLockCapsLock改为LeftCtrlRightCtrl改为CapsLockLeftCtrl改为RightCtrl原来使用KeybMap这个软件修改,由于自己修改......
  • 【快应用】input组件的输入框弹出后,如何点击其他地方后失去焦点,并收起键盘
    可以在input组件最外面的div上写一个收起键盘的事件。 代码如下(关注加粗的内容): <template>  <div class="item-container">    <div class="item-containe......
  • flutter —— 布局原理与约束 2
    一、布局模型Sliver的布局流程如下:Viewport将当前布局和配置信息通过SliverConstraints传递给Sliver。Sliver确定自身的位置、绘制等信息,保存在geometry中(一个......