目前,我知道使用此代码隐藏软键盘的方法,任何小工具都有onTap种方法.

FocusScope.of(context).requestFocus(new FocusNode());

但我想通过点击文本字段外或屏幕上的任何地方来隐藏软键盘.有什么方法可以做到这一点吗?

推荐答案

你做错了,试着用这个简单的方法隐藏软键盘.您只需要将整个屏幕包装在GestureDetector方法和onTap方法中,并编写此代码.

        FocusScope.of(context).requestFocus(new FocusNode());

以下是完整的示例:

new Scaffold(

body: new GestureDetector(
  onTap: () {
   
    FocusScope.of(context).requestFocus(new FocusNode());
  },
child: new Container(
   //rest of your code write here
    )
 )

Updated (May 2021)

return GestureDetector(
      onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
      child: Scaffold(
        appBar: AppBar(
          title: Text('Login'),
        ),
        body: Body(),
      ),
    );

即使你touch AppBar,这也会起作用,newoptional in Dart 2.FocusManager.instance.primaryFocus将返回窗口小部件树中当前具有主要焦点的 node .

Conditional access in Dart with null-safety

Flutter相关问答推荐

如何在flutter文本字段中添加要点条目?

文本未设置在集装箱摆动的中心

为什么PUT方法没有发出任何响应?

从.gitignore中排除.fvm/fvm_config.json

如何在Flutter 安全存储器中存储对象值?

如何将WebViewWidget和WillPopScope结合起来

在flutter中实现类似3D的可滚动堆叠分页列表

Flutter - Stripe:类型List 不是类型Map 的子类型? method_channel_stripe.dart 中的错误:263

运行任何 flutter 命令都会显示无法安装 <版本>

hooks_riverpod 有用途吗

创建混合 TextWidget 和 TextFieldWidget

Flutter url_launcher 插件抛出java.lang.IllegalArgumentException:接收器未注册:io.flutter.plugins.urllauncher.WebViewActivity

如何解决需要一个标识符,但得到的是:.try 在:之前插入一个标识符.dart 错误

小部件堆栈未显示顶层

是否有可能减少代码的编写,例如:ref.read(countProvider.notifier) - 在构建方法中?

为什么将 bloc 提供程序放在单独的文件/类中会引发错误?

Flutter/Dart 返回_Future的实例而不是实际的字符串值

Future.wait() 中的 futures 可以顺序调用吗?

Flutter 中父容器顶部的 Gridview 间距额外区域

Flutter 小部件中的视图和逻辑分离