File tree Expand file tree Collapse file tree 3 files changed +16
-5
lines changed
packages/flutter_form_builder/lib/src Expand file tree Collapse file tree 3 files changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -260,7 +260,8 @@ class _FormBuilderDateTimePickerState
260
260
super .initState ();
261
261
_textFieldController = widget.controller ?? TextEditingController ();
262
262
_dateFormat = widget.format ?? _getDefaultDateTimeFormat ();
263
- final initVal = initialValue;
263
+ //setting this to value instead of initialValue here is OK since we handle initial value in the parent class
264
+ final initVal = value;
264
265
_textFieldController.text =
265
266
initVal == null ? '' : _dateFormat.format (initVal);
266
267
effectiveFocusNode.addListener (_handleFocus);
Original file line number Diff line number Diff line change @@ -437,8 +437,8 @@ class _FormBuilderTextFieldState
437
437
@override
438
438
void initState () {
439
439
super .initState ();
440
- _controller =
441
- widget.controller ?? TextEditingController (text: initialValue );
440
+ //setting this to value instead of initialValue here is OK since we handle initial value in the parent class
441
+ _controller = widget.controller ?? TextEditingController (text: value );
442
442
_controller! .addListener (_handleControllerChanged);
443
443
}
444
444
Original file line number Diff line number Diff line change @@ -122,19 +122,29 @@ class FormBuilderState extends State<FormBuilder> {
122
122
if (oldField != null ) {
123
123
// ignore: invalid_use_of_protected_member
124
124
field.setValue (oldField.value);
125
+ _tempFieldValues.remove (name);
125
126
} else {
126
- // ignore: invalid_use_of_protected_member
127
- field.setValue (field.initialValue);
127
+ final oldTemp = _tempFieldValues[name];
128
+ if (oldTemp != null ) {
129
+ // ignore: invalid_use_of_protected_member
130
+ field.setValue (oldTemp);
131
+ _tempFieldValues.remove (name);
132
+ } else {
133
+ // ignore: invalid_use_of_protected_member
134
+ field.setValue (field.initialValue);
135
+ }
128
136
}
129
137
}
130
138
139
+ final _tempFieldValues = < String , dynamic > {};
131
140
void unregisterField (String name, FormBuilderFieldState field) {
132
141
assert (_fields.containsKey (name));
133
142
// Only remove the field when it is the one registered. It's possible that
134
143
// the field is replaced (registerField is called twice for a given name)
135
144
// before unregisterField is called for the name, so just emit a warning
136
145
// since it may be intentional.
137
146
if (field == _fields[name]) {
147
+ _tempFieldValues[name] = field.value;
138
148
_fields.remove (name);
139
149
} else {
140
150
assert (() {
You can’t perform that action at this time.
0 commit comments