Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > Flutter 全局点击空白处隐藏键盘

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

作者:老孟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 全局点击空白处隐藏键盘内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文