代码之家  ›  专栏  ›  技术社区  ›  Sid

如何将编辑后的AutoCompleteTextField值转换为表单数据

  •  0
  • Sid  · 技术社区  · 7 年前

    使用Flatter,我有一个表单,其中包含一个AutoCompleteTextField,我试图改变文本字段的值。当使用与我的上一个问题相关联的技术打开表单时,要编辑的值被放入AutoCompleteText字段:

    How to set the initial value of Flutter autocomplete_textfield

    现在我发现,如果我试图更改字段的值,自动补全似乎可以工作,但提交表单时,新文本不会出现在表单数据中,之前的条目仍然存在。我已经尝试将新文本添加到表单数据中,但这不会改变行为。

    “itemSubmitted”代码如下所示:

            itemSubmitted: (species) {
          setState(() {
            searchTextField.textField.controller.text = species.commonName;
          });
    

    submit方法在表单数据上调用validate和save:

      if (_formKey.currentState.validate() == false) {
        return;
      }
      _formKey.currentState.save();
    

    我还需要做什么才能在公司数据中更新AutoCOmpleteTextField中的新选择?

    更新: 看起来,如果我从一个空白表单开始,我就可以在AutoCompleteTextField中搜索条目,将数据保存到我的数据库(不清除表单),搜索新值,并且每次都能将数据正确地放入表单数据中。这表明表单打开时字段的初始化导致了问题。

    希德

    0 回复  |  直到 7 年前
        1
  •  0
  •   Sid    7 年前

    这个问题完全是我自己造成的,我使用相同的代码来创建和编辑条目。为了区分new和edit,我测试了传递给页面的有效对象,我的错误是,当我的文本搜索字段被更新时,我只是简单地检查是否有有效对象被传递给了页面,当然,新数据是在表单数据结构中,从未被放入正在编辑的对象中。

    解决方案是首先检查是否存在有效的输入对象,如果存在,则进行二次测试,以查看表单数据是否与输入对象匹配,如果不匹配,则将新数据放入输入对象。