如何在颤动中取消焦点文本字段

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 的关注,而无需稍后返回焦点

如何发现 TextField 编辑被取消/键盘折叠/焦点丢失

如何在颤动的文本字段中处理标签文本? [关闭]

如何在文本字段颤动中删除 suffixIcon 的填充