flutter 如何在抖动中取消文本字段的焦点?

ilmyapht  于 2023-05-19  发布在  Flutter
关注(0)|答案(2)|浏览(201)

我不知道这是否是正常的抖动行为,但令人恼火的是,只有当你点击键盘上的“确定”按钮失去焦点时,你才会失去焦点。如果未执行此操作,光标将在文本字段中保持活动状态。
避免这种情况的最佳做法是什么?(在gif中,它不太受欢迎,但失去焦点的唯一方法是点击键盘上的“ok”按钮,否则光标将始终处于活动状态,无论您是否点击屏幕的其他区域)

Widget _searchBar() {
     return Container(
      child: TextField(
        textAlignVertical: TextAlignVertical.center,
        style: TextStyle(
          textBaseline: TextBaseline.alphabetic,
          color: _styles["gris_oscuro1"]["color"],
        ),
        onChanged: (value) {},
        decoration: InputDecoration(
          filled: true,
          fillColor: _styles["gris_claro"]["color"],
          alignLabelWithHint: true,
          hintText: "Buscar por código",
          hintStyle: TextStyle(color: _styles["gris_oscuro2"]["color"]),
          prefixIcon:
              Icon(Icons.search, color: _styles["gris_oscuro2"]["color"]),
          enabledBorder: OutlineInputBorder(
            borderRadius: BorderRadius.all(Radius.circular(40)),
            borderSide:
                BorderSide(color: _styles["gris_claro"]["color"], width: 1.0),
          ),
        ),
      ),
    );
    );

    Scaffold(
        key: _scaffoldKey,
        backgroundColor: _styles["fondo"]["bg"],
        drawer: MenuWidget(),
        body: SafeArea(
        child: _searchBar(),
        )
kcrjzv8t

kcrjzv8t1#

GestureDetector Package 整页,并修改其onTap函数,如下所示:

@override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () { //here
        FocusScope.of(context).unfocus();
        new TextEditingController().clear();
      },
      child: Container(
      ...
    );
  }
vlf7wbxs

vlf7wbxs2#

onTapOutside: ((event) {
              FocusScope.of(context).unfocus();
            }),

将其添加到TextField。

相关问题