首页 > 解决方案 > 如何停止键盘弹出问题是 TextField 颤动

问题描述

在这个应用程序中,当我在搜索栏中写东西并按下键盘上的完成按钮,然后按下十字按钮时,它会显示键盘并再次关闭它。如何停止弹出键盘。

    Widget _search() {
       return Padding(
       padding: const EdgeInsets.all(10.0),
       child: TextField(
        onSubmitted: (s){
          //
        },
        controller: _controller,
        decoration: InputDecoration(
          prefixIcon: Icon(Icons.search),
          suffixIcon: IconButton(
            icon: Icon(Icons.clear),
            onPressed: () {
              _controller.clear();
              FocusScope.of(context).requestFocus(FocusNode());
              
            },
          ),
          enabledBorder: OutlineInputBorder(
            borderSide: BorderSide(color: Color(0xFF9ad3bc)),
            borderRadius: BorderRadius.all(Radius.circular(100)),
          ),
          focusedBorder: OutlineInputBorder(
            borderSide: BorderSide(color: Color(0xFF9ad3bc)),
            borderRadius: BorderRadius.all(Radius.circular(100)),
          ),
          hintText: 'Search..',
        ),
      ),
    );
  }

如果我不按下完成按钮(在键盘中),键盘将保留在屏幕中并且可以正常工作。但是如果我不关闭键盘,就会出现弹出问题。
在此处输入图像描述

标签: fluttertextfield

解决方案


而不是只在本地创建焦点节点,而是这样做:

 @override
 void initState() {
    //rest of your code
    _focusNode = FocusNode();
    super.initState();
 }

然后在文本字段中添加

focusNode: _focusNode(),

在 onSubmitted 方法中添加:

_focusNode.unfocus();

推荐阅读