【发布时间】:2019-11-05 16:04:32
【问题描述】:
我对@987654321@ 有点陌生,所以我不知道这是否是更新从服务器收集的数据的“正确”方式。就我而言,我正在做的是(我的应用程序代码很长,我认为下面的描述就足够了):
- 让用户为给定日期创建自定义表单。
- 让他将数据上传到服务器(更具体地说,
Firebase)。 - 如果他点击一个日期,表格应该更新为
Firebase上保存的最新表格。- 为此,我将删除所有
TextFormField小部件(它们保存在Map中,我用widgetsMap = {}重置,这也是我为表单数据本身所做的)并重建它们使用从Firebase检索到的数据。 -
TextFormField的初始值应基于从Firebase检索到的内容。为此,我尝试使用controller和initialValue,但都没有奏效。-
问题是,如果我想第二次更新一个字段的初始值,前一个将保留。例如,如果
date 1的初始值为Hello,而date 2的初始值为World;当我点击来自date 1的date 2时,虽然TextFormField小部件(甚至可能有不同数量)将正确构建,但显示的初始值仍将是Hello。
-
问题是,如果我想第二次更新一个字段的初始值,前一个将保留。例如,如果
- 为此,我将删除所有
那么发生了什么?一旦小部件和数据被重置,小部件的initialValue 不应该被清除吗?即使在我使用= {} 重置它们之后,这些对象是否仍然存在于后台某处(我认为,由于dart 是一种垃圾收集语言,一旦对它们的引用消失,这些对象就会被删除......) ?
【问题讨论】:
-
你能粘贴一些代码吗?
-
@FilipP。 ,你为什么删除你之前的答案?我刚刚对其进行了测试,它似乎确实有效。我现在同时使用
key和initialValue。所以它会是这样的:TextFormField(key: Key(widget.initialValue), initialValue: widget.initialValue, ...).
标签: firebase flutter dart textfield