一、 需求说明
点击输入框时,输入框可以获取焦点,点击输入框之外的地方时,输入框失去焦点。
二、解决方案
1. 初始化focusNode,FocusNode focusNode = FocusNode()
2. 给输入框TextField设置focusNode
3. 在onTapOutside事件中调用focusNode.unfocus()
4. 组件销毁前释放focusNode,focusNode.dispose()
注意:如果Flutter SDK的版本太低的话,就没有onTapOutside事件,更新一下Flutter SDK就有了文章来源:https://www.toymoban.com/news/detail-606401.html
三、代码分享
class _SearchInput extends State<SearchInput> {
///编辑控制器
late TextEditingController _controller;
/// 是否显示删除按钮
bool _hasDeleteIcon = false;
/// 输入框焦点
FocusNode focusNode = FocusNode();
@override
void initState() {
super.initState();
_controller = TextEditingController();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: _controller,
textInputAction: TextInputAction.search,
textAlignVertical: TextAlignVertical.center,
keyboardType: TextInputType.text,
focusNode: focusNode,
onTapOutside: (e) => {
focusNode.unfocus()
},
onEditingComplete: () {
FocusScope.of(context).requestFocus(focusNode);
},
);
}
@override
void dispose() {
super.dispose();
_controller.dispose();
focusNode.dispose();
}
}
四、参考:
Flutter中焦点FocusNode使用分析Flutter输入框焦点事件的捕捉与监听 - 知乎文章来源地址https://www.toymoban.com/news/detail-606401.html
到了这里,关于Flutter 点击输入框之外的地方时,输入框失去焦点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!