【发布时间】:2019-10-01 14:25:39
【问题描述】:
在我的应用程序中,有一个部分可以添加付款。要添加付款,管理员将:
- 选择一个用户
- 输入金额
- 选择从日期开始
- 选择迄今为止
然后保存。
目标:我想根据之前的日期动态更新从日期。
示例:
- 我们添加了用户的首次付款,从
1st June 2019到1st September 2019 - 当我们尝试进行第二次付款时,当客户被选中时;我想将最后一次付款to date设为from date,自动填充。 (to date 从 db 到 from date 形式)
初始化时不能做,因为每个用户的日期都不一样,所以我们可以根据用户的选择来做。
我做了什么:
我几乎完成了所有工作,但是在更新字段值时遇到了问题。
我已完成以下步骤:
- 创建了一个在用户被选中时执行的函数
- 函数查询数据库,并提取最后的付款明细
- 并返回迄今为止以前付款的字段值
-
起始日期字段值在同一函数中设置,如下所示:
setState(() { _fromDate = DateTime.parse(toDate); });
问题:
在 setState 函数内部打印 _fromDate 会打印正确的值,但在外部是 null。
请告诉我,我怎样才能正确更新值并摆脱这个问题?
更新:Widget代码如下:(state设置如上,从db获取数据后)
DateTimeField(
onSaved: (val) => setState(() => _fromDate = val),
keyboardType: TextInputType.datetime,
onChanged: (DateTime newValue) {
setState(() {
_fromDate = newValue;
});
},
onShowPicker: (context, currentValue) {
return showDatePicker(
context: context,
firstDate: DateTime.now(),
initialDate: currentValue ?? DateTime.now(),
);
},
);
【问题讨论】:
-
你能添加小部件的代码来看看你是如何初始化和使用_fromDate的吗?
-
@KirillMatrosov 我已经更新了问题,请检查...
-
您没有将
format指向DateTimeField和lastDate指向showDatePicker。此代码无效。请检查,也许这是问题 -
通过添加
format: DateFormat("yyyy-MM-dd"),和lastDate: DateTime.now().add(new Duration(days: 30))更新了代码,但仍然是同样的问题...
标签: flutter dart state state-management