如何在颤动中取消焦点文本字段
Posted
技术标签:
【中文标题】如何在颤动中取消焦点文本字段【英文标题】:how to unfocus a textfield in flutter 【发布时间】:2020-05-04 21:46:42 【问题描述】:我试图在颤动中创建一个文本字段,但是当您单击或点击它时,我不希望它获得焦点。但是,点击应该可以工作。
我有以下代码
@override
Widget build(BuildContext context)
return new Container(
color: Colors.white,
child: new TextField(
focusNode: FocusScope.of(context).unfocus(),
onTap: () print 'test';
),
);
FocusScope.of(context).unfocus() 给出错误 "这里的表达式有一个'void'类型,因此不能使用"
我想在您点击文本字段时禁用焦点功能,但点击功能应该可以工作,当然我不希望在点击文本字段时出现键盘。任何反馈 ?提前致谢
【问题讨论】:
【参考方案1】:你试过readonly 属性,readonly 仍将获得焦点,并会阻止键盘连接阻止它弹出。
TextField(
readOnly:true
controller: editingController,
onTap: () async
selectedValue = await showDialog();
setState(()
editingController.text = '$selectedValue';
);
,
);
来源:issue:16863
【讨论】:
嗨,maheshmnj,感谢您的回复。只读部分起作用,因为它隐藏了键盘并且不聚焦,但问题是当我点击时我会弹出一个对话框,用户选择一个值并且文本字段将设置为一个值。用户无法更改值,这就是我要禁用焦点功能的原因。但是,当用户从弹出对话框中选择一个值时,文本字段将被设置为值。如何修改我的代码以禁用焦点,同时仍然保持文本可编辑 在这种情况下,您可以使用显示对话框的文本字段的ontap()
属性,并在选择对话框时使用 setState() 为您的文本字段设置所需的值,同时保持readOnly :true
以上是关于如何在颤动中取消焦点文本字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中完全取消对 TextField 的关注,而无需稍后返回焦点