File tree Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Original file line number Diff line number Diff line change
1
+ import 'package:flutter/foundation.dart' ;
1
2
import 'package:flutter/material.dart' ;
2
3
import 'package:flutter_form_builder/flutter_form_builder.dart' ;
3
4
@@ -299,8 +300,28 @@ class _FormBuilderDropdownState<T>
299
300
@override
300
301
void didUpdateWidget (covariant FormBuilderDropdown <T > oldWidget) {
301
302
super .didUpdateWidget (oldWidget);
302
- if (widget.items != oldWidget.items) {
303
+
304
+ final oldValues = oldWidget.items.map ((e) => e.value).toList ();
305
+ final currentlyValues = widget.items.map ((e) => e.value).toList ();
306
+ final oldChilds = oldWidget.items.map ((e) => e.child.toString ()).toList ();
307
+ final currentlyChilds =
308
+ widget.items.map ((e) => e.child.toString ()).toList ();
309
+
310
+ if ((! listEquals (oldChilds, currentlyChilds) ||
311
+ ! listEquals (oldValues, currentlyValues)) &&
312
+ (widget.items.contains (initialValue) ||
313
+ _emptyValidator <T >(initialValue))) {
303
314
setValue (initialValue);
304
315
}
305
316
}
306
317
}
318
+
319
+ bool _emptyValidator <T >(T ? value) {
320
+ if (value == null ) return true ;
321
+ if (value is Iterable ) return value.isEmpty;
322
+ if (value is String ) return value.isEmpty;
323
+ if (value is List ) return value.isEmpty;
324
+ if (value is Map ) return value.isEmpty;
325
+ if (value is Set ) return value.isEmpty;
326
+ return false ;
327
+ }
You can’t perform that action at this time.
0 commit comments