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' ;
12import 'package:flutter/material.dart' ;
23import 'package:flutter_form_builder/flutter_form_builder.dart' ;
34
@@ -299,8 +300,28 @@ class _FormBuilderDropdownState<T>
299300 @override
300301 void didUpdateWidget (covariant FormBuilderDropdown <T > oldWidget) {
301302 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))) {
303314 setValue (initialValue);
304315 }
305316 }
306317}
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