gpt4 book ai didi

firebase - TextFormField 不重置其初始值

转载 作者:行者123 更新时间:2023-12-03 03:12:23 26 4
gpt4 key购买 nike

我对 Flutter 有点陌生所以我不知道这是否是更新从服务器收集的数据的“正确”方式。就我而言,我正在做的是(我的应用程序代码很长,我认为下面的描述就足够了):

  • 让用户为给定日期创建自定义表单。
  • 让他将数据上传到服务器(更具体地说, Firebase )。
  • 如果他单击某个日期,则该表单应更新为保存在 Firebase 上的最新表单。 .
  • 为此,我将删除所有 TextFormField小部件(它们保存在 Map 中,我用 widgetsMap = {} 重置,这也是我对表单数据本身所做的)并使用从 Firebase 检索到的数据重建它们.
  • TextFormField应该具有基于从 Firebase 中检索到的内容的初始值.为了实现这一点,我尝试使用 controller和一个 initialValue ,但都没有奏效。
  • 问题也就是说,如果我想第二次更新一个字段的初始值,前一个将保留。例如,如果 date 1初始值为 Hellodate 2初始值为 World ;当我点击 date 2来自 date 1 ,虽然 TextFormField小部件(甚至可能有不同数量的)将被正确构建,显示的初始值仍然是 Hello .

  • 那么发生了什么?不应该是 initialValue小部件和数据重置后是否会清除小部件?即使在我用 = {} 重置它们之后,这些对象是否仍然存在于背景中的某个地方? (我认为,由于 dart 是一种垃圾收集语言,一旦对它们的引用消失,这些对象就会被删除......)?

    最佳答案

    添加 KeyTextFormField .您可以使用 Key(initialValue) .例如:

    TextFormField(
    key: Key(widget.initialValue),
    initialValue: widget.initialValue),
    ...
    )

    虽然你重置了自己的 map TextFormField s,如果你放新的 TextFormField s 在小部件树中的相同位置, Flutter框架将重用以前的状态。设置 Key会告诉 Flutter这是一个不同的小部件。

    关于firebase - TextFormField 不重置其初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58715192/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com