Используя Flutter Form Builder, как изменить значение даты FormBuilderDateTimePicker, добавив значение FormBuilderFieldOption
Я новичок в трепетании, и я пытаюсь изменить начальное значение флаттера FormBuilderDateTimePicker при нажатии на один из чипов, созданных с помощью FormBuilderChoiceChip. Мне нужно добавить значение каждого FormBuilderFieldOption в FormBuilderChoiceChip к начальному значению FormBuilderDateTimePicker. Вот код:
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(),
)
]
)
вот изображение вывода: при щелчке по каждой микросхеме значение должно быть добавлено к начальному значению даты и получить обновление до будущей даты.
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'),
],
});
Вы можете изменить базовое значение
date
атрибут с помощью
onChanged
событие, но начальное значение атрибута остается неизменным в пользовательском интерфейсе.
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()
работает только в фоновом режиме, но не обновляет пользовательский интерфейс, как объясняет здесь создатель пакета.