【问题标题】: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'类型,因此不能使用"

我想在您点击文本字段时禁用焦点功能,但点击功能应该可以工作,当然我不希望在点击文本字段时出现键盘。任何反馈 ?提前致谢

【问题讨论】:

    标签: flutter


    【解决方案1】:

    你试过readonly 属性,readonly 仍将获得焦点,并会阻止键盘连接阻止它弹出。

     TextField(
       readOnly:true
       controller: editingController,
       onTap: () async {
       selectedValue = await showDialog();
       setState(() {
          editingController.text = '$selectedValue';
        });
       },
     );
    

    来源:issue:16863

    【讨论】:

    • 嗨,maheshmnj,感谢您的回复。只读部分起作用,因为它隐藏了键盘并且不聚焦,但问题是当我点击时我会弹出一个对话框,用户选择一个值并且文本字段将设置为一个值。用户无法更改值,这就是我要禁用焦点功能的原因。但是,当用户从弹出对话框中选择一个值时,文本字段将被设置为值。如何修改我的代码以禁用焦点,同时仍然保持文本可编辑
    • 在这种情况下,您可以使用显示对话框的文本字段的ontap() 属性,并在选择对话框时使用 setState({}) 为您的文本字段设置所需的值,同时保持readOnly :true
    猜你喜欢
    • 2020-09-17
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多