Как расфокусировать текстовое поле во флаттере? - PullRequest
0 голосов
/ 29 мая 2020

enter image description here

Я не знаю, нормальное ли это поведение трепетания, но раздражает, что вы теряете фокус только тогда, когда нажимаете на клавиатуре кнопку «ОК», чтобы терять фокус. Если этого не сделать, курсор останется активным в текстовом поле.

Как лучше всего этого избежать? (В гифке это не очень ценится, но единственный способ потерять фокус - это нажать кнопку «ОК» на клавиатуре, иначе курсор всегда будет активен, независимо от того, нажимаете ли вы на другие области экрана)

    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(),
        )

1 Ответ

1 голос
/ 29 мая 2020

enter image description here

Оберните всю страницу в GestureDetector и измените ее функцию onTap следующим образом:

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