温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Flutter 实现在全局模式下点击空白处隐藏键盘功能

发布时间:2020-11-05 16:39:01 来源:亿速云 阅读:428 作者:Leah 栏目:开发技术

使用Flutter 实现在全局模式下点击空白处隐藏键盘功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

对于单个页面来说,通过为 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,
     ),
    ),
   ),
  );
 }
}

使用Flutter 实现在全局模式下点击空白处隐藏键盘功能

当 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 实现在全局模式下点击空白处隐藏键盘功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI