使用 Flutter Form Builder 如何通过添加 FormBuilderFieldOption 的值来更改 FormBuilderDateTimePicker 的日期值
Posted
技术标签:
【中文标题】使用 Flutter Form Builder 如何通过添加 FormBuilderFieldOption 的值来更改 FormBuilderDateTimePicker 的日期值【英文标题】:Using Flutter Form Builder how to change the date value of FormBuilderDateTimePicker by adding the value of FormBuilderFieldOption 【发布时间】:2020-07-09 09:35:23 【问题描述】:我是颤振的新手,我正在尝试通过单击使用 FormBuilderChoiceChip 创建的芯片之一来更改颤振 FormBuilderDateTimePicker 的初始值。我需要将FormBuilderChoiceChip下的每个FormBuilderFieldOption的值添加到FormBuilderDateTimePicker的initialValue中。 代码如下:
child: Column(
children: <Widget>[
FormBuilderChoiceChip(
attribute: "custom_days",
spacing: 3.0,
options: [
FormBuilderFieldOption(
child: Text("3 Days"),
value: 3
),
FormBuilderFieldOption(
child: Text("5 Days"),
value: 5
),
FormBuilderFieldOption(
child: Text("7 Days"),
value: 7
),
],
),
FormBuilderDateTimePicker(
attribute: "date",
inputType: InputType.date,
format: DateFormat("dd-MM-yyyy"),
decoration: InputDecoration(labelText: "Select Date"),
initialValue: DateTime.now(),
)
]
)
这是输出的图像: 单击每个筹码时,应将值添加到日期的初始值中,并更新到未来的日期。
【问题讨论】:
【参考方案1】:您可以使用 onChanged
事件更改 date
属性的基础值,但该属性的初始值在 UI 上保持不变。
FormBuilderChoiceChip(
attribute: "custom_days",
spacing: 3.0,
onChanged: (daysToAdd)
_fbKey.currentState.save();
_fbKey.currentState.setAttributeValue(
'date',
_fbKey.currentState.value['date']
.add(Duration(days: daysToAdd)));
_fbKey.currentState.save();
,
options: [
FormBuilderFieldOption(
child: Text(
"3 Days",
),
value: 3),
FormBuilderFieldOption(
child: Text(
"5 Days",
),
value: 5),
FormBuilderFieldOption(child: Text("7 Days"), value: 7),
],
)
setAttributeValue()
仅在后台工作,但不会更新 UI,正如包创建者 here 所解释的那样。
【讨论】:
【参考方案2】:您可以通过didChange
或patchValue
更改字段值。在您的芯片 onChnage 上更新日期字段。
使用 didChange 更改单个字段值:
_formKey.currentState.fields['color_picker'].didChange(Colors.black);
使用 patchValue 更改多个字段值
_formKey.currentState.patchValue(
'age': '50',
'slider': 6.7,
'filter_chip': ['Test 1'],
'choice_chip': 'Test 2',
'rate': 4,
'chips_test': [
Contact('Andrew', 'stock@man.com', 'https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX4057996.jpg'),
],
);
please check the api reference
【讨论】:
以上是关于使用 Flutter Form Builder 如何通过添加 FormBuilderFieldOption 的值来更改 FormBuilderDateTimePicker 的日期值的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:使用 ListView.builder 消失的 SliverAppBar
如何在 Flutter 中添加 ListView.builder 的填充顶部?
Flutter:ListView.builder 中的自动垂直高度
Flutter:在 ListView Builder 中使用 Hero 动画