当前位置: 首页 > 知识库问答 >
问题:

我怎样才能取消屏幕键盘?

易祯
2023-03-14

我正在使用TextFormField收集用户输入,当用户按下FloatingActionButton指示输入完成时,我希望取消屏幕键盘。

如何使键盘自动消失?

import 'package:flutter/material.dart';

class MyHomePage extends StatefulWidget {
  MyHomePageState createState() => new MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> {
  TextEditingController _controller = new TextEditingController();

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(),
      floatingActionButton: new FloatingActionButton(
        child: new Icon(Icons.send),
        onPressed: () {
          setState(() {
            // send message
            // dismiss on screen keyboard here
            _controller.clear();
          });
        },
      ),
      body: new Container(
        alignment: FractionalOffset.center,
        padding: new EdgeInsets.all(20.0),
        child: new TextFormField(
          controller: _controller,
          decoration: new InputDecoration(labelText: 'Example Text'),
        ),
      ),
    );
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

void main() {
  runApp(new MyApp());
}

共有1个答案

徐杰
2023-03-14

从Flutter V1.7.8+Hotfix.2开始,我们的方法是:

FocusScope.of(context).unfocus()

关于这一点的公关评论:

现在#31909(be75fb3)已经登陆,您应该使用focusscope.of(context).unfocus()而不是focusscope.of(context).requestfocus(FocusNode()),因为FocusNodechangenotifiers,应该正确处理。

 F̶o̶c̶u̶s̶S̶c̶o̶p̶e̶.̶o̶f̶(̶c̶o̶n̶t̶e̶x̶t̶)̶.̶r̶e̶q̶u̶e̶s̶t̶F̶o̶c̶u̶s̶(̶F̶o̶c̶u̶s̶N̶o̶d̶e̶(̶)̶)̶;̶
 类似资料:
  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 我正在阅读Kafka的文档,注意到下面一行: 但是,请注意,使用者组中的使用者实例不能多于分区。 嗯。如何自动缩放? 这是Kafka的限制但是...如果我理解这是如何工作的,那么两个用户组都将从一个分区(例如msg.hi)中提取,并使用它们自己的偏移量,因此两个用户组都不知道另一个分区--这意味着消息可能会被传递两次! 我怎样才能达到我在兔子设计中所拥有的Kafka的能力,并且仍然保持行为的“队列

  • 我有一个问题,在我看来挺简单的,但到目前为止还不可能找到一个简单的解决方案:在我的网站上,每当Android软键盘弹出时,它就会调整窗口大小,缩小内容,而不是仅仅覆盖页面。 前两个是现状,第三个是我想要的。在iOS上是这样工作的。我该怎么做才能让它正常工作呢? 我试着设定身体的大小和位置,但到目前为止,没有运气。我已经看到了一些非常复杂的JS代码片段来解决类似的问题,但是我没有让它们按照我想要的方

  • 问题内容: 我试图“ stopPropagation”以防止单击li内的元素(链接)时关闭TwitterBootstrap导航栏下拉菜单。 在Angular中,看起来像指令是执行此操作的地方?所以我有: …但是该方法不属于元素: 我把指令与 有什么建议么? 问题答案: “当前一些指令(即ng:click)停止事件传播。这阻止了与依赖于捕获此类事件的其他框架的互操作性。” - …并且能够在没有指令的

  • 所以我试图将重力添加到4个UIButton,但它们没有下降,我将此代码添加到视图中并加载,我不知道为什么这不起作用。这是代码: 我的按钮有红色按钮、绿色按钮、蓝色按钮和相机按钮,我也应用了秋天的方向,但当我运行应用程序时,它们只是静态的。那么,有没有可能给这些按钮增加重力呢?

  • 问题内容: 这是一个简单的ArrayList排序程序: 我期望该程序的输出为: 但是当我运行该程序时,我得到的输出为: 为什么会这样?如何使ArrayList进行排序,如预期输出所示? 问题答案: 您可以编写一个自定义比较器: