flutter - 单击屏幕上的文本字段/任何位置后,如何在 flutter 上隐藏软输入键盘?

目前,我知道使用此代码隐藏软键盘的方法,通过任何小部件的 onTap 方法。

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

但我想通过单击 TextField 外部或屏幕上的任何位置来隐藏软键盘。 flutter 中是否有任何方法可以做到这一点?

最佳答案

你做错了,试试这个简单的方法来隐藏软键盘。您只需将整个屏幕包裹在 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
    )
 )

更新(2021 年 5 月)

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

即使您触摸 AppBar,这也会起作用,new 是 optional in Dart 2 . FocusManager.instance.primaryFocus 将返回小部件树中当前具有主要焦点的节点。

Conditional access in Dart with null-safety

https://stackoverflow.com/questions/51652897/

相关文章:

dart - 如何在 flutter 的另一个有状态小部件中访问在一个有状态小部件中创建的对象

flutter - 在 Flutter 中使用 SafeArea

dart - Flutter:在简历上更新小部件?

android-studio - 使用 Android Studio 自动在右括号后插入注释

dart - 将带参数的函数传递给 VoidCallback

flutter - 如何在 Flutter 中创建带有圆角的模态底页?

flutter - 如何在 flutter 中听焦点变化?

flutter - 如何让应用程序保持清醒?

flutter - 如何在 Dart 中对 Textfield onChange 进行去抖动?

dart - 在所有页面 Flutter 中持久化 AppBar Drawer