flutter - 如何停止键盘弹出问题是 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..',
),
),
);
}
解决方案
而不是只在本地创建焦点节点,而是这样做:
@override
void initState() {
//rest of your code
_focusNode = FocusNode();
super.initState();
}
然后在文本字段中添加
focusNode: _focusNode(),
在 onSubmitted 方法中添加:
_focusNode.unfocus();
推荐阅读
- android - Android 使用线程执行后台作业
- ruby - .select undefined method for main:Object (NoMethodError) Ruby
- r - 总结 R 中的足球投注赔率
- go - Google Cloud 数据流作业失败并出现错误“无法检索暂存文件:3 次尝试检索工作人员失败:MD5 错误...”
- angular - Mocking dependecies with services resulting in firebase error
- javascript - 强制从 WebView 在 Chrome 中打开我的渐进式网络应用程序
- symfony - 使用 Swiftmailer 在 Heroku 中发送电子邮件的问题
- vue.js - vue-jest 错误:“SyntaxError: Unexpected token <”由`import PictureInput from 'vue-picture-input'`引起
- javascript - 如何在 Three.js 中返回对象而不是将其添加到场景中?(FBXLoader)
- node.js - 如何使用 NodeJS 在 MongoDB 中使用批处理插入数百万个文档