@@ -365,30 +365,35 @@ class SelectFormField extends FormField<String> {
365365
366366class _SelectFormFieldState extends FormFieldState <String > {
367367 TextEditingController _labelController = TextEditingController ();
368- TextEditingController _valueController ;
368+ TextEditingController _stateController ;
369369 Map <String , dynamic > _item;
370370
371371 @override
372372 SelectFormField get widget => super .widget as SelectFormField ;
373373
374374 TextEditingController get _effectiveController =>
375- widget.controller ?? _valueController ;
375+ widget.controller ?? _stateController ;
376376
377377 @override
378378 void initState () {
379379 super .initState ();
380380
381381 if (widget.controller == null ) {
382- _valueController = TextEditingController (text: widget.initialValue);
382+ _stateController = TextEditingController (text: widget.initialValue);
383383 } else {
384384 widget.controller.addListener (_handleControllerChanged);
385385 }
386386
387- _item = widget.items.firstWhere (
388- (lmItem) => lmItem['value' ] == _effectiveController.text,
389- orElse: () => widget.items[0 ],
390- );
391- _labelController.text = _item['label' ];
387+ if (_effectiveController.text != null && _effectiveController.text != '' ) {
388+ _item = widget.items.firstWhere (
389+ (lmItem) => lmItem['value' ] == _effectiveController.text,
390+ orElse: () => null ,
391+ );
392+
393+ if (_item != null ) {
394+ _labelController.text = _item['label' ];
395+ }
396+ }
392397 }
393398
394399 @override
@@ -400,24 +405,29 @@ class _SelectFormFieldState extends FormFieldState<String> {
400405 widget.controller? .addListener (_handleControllerChanged);
401406
402407 if (oldWidget.controller != null && widget.controller == null ) {
403- _valueController =
408+ _stateController =
404409 TextEditingController .fromValue (oldWidget.controller.value);
405410 }
406411
407412 if (widget.controller != null ) {
408413 setValue (widget.controller.text);
409414
410415 if (oldWidget.controller == null ) {
411- _valueController = null ;
416+ _stateController = null ;
412417 }
413418 }
414419 }
415420
416- _item = widget.items.firstWhere (
417- (lmItem) => lmItem['value' ] == _effectiveController.text,
418- orElse: () => widget.items[0 ],
419- );
420- _labelController.text = _item['label' ];
421+ if (_effectiveController.text != null && _effectiveController.text != '' ) {
422+ _item = widget.items.firstWhere (
423+ (lmItem) => lmItem['value' ] == _effectiveController.text,
424+ orElse: () => null ,
425+ );
426+
427+ if (_item != null ) {
428+ _labelController.text = _item['label' ];
429+ }
430+ }
421431 }
422432
423433 @override
@@ -459,12 +469,16 @@ class _SelectFormFieldState extends FormFieldState<String> {
459469 );
460470
461471 if (lvItemPicked != null && lvItemPicked != value) {
462- _item = widget.items
463- .firstWhere ((lmItem) => lmItem['value' ] == _effectiveController.text);
464- _labelController.text = _item['label' ];
472+ _item = widget.items.firstWhere (
473+ (lmItem) => lmItem['value' ] == lvItemPicked,
474+ orElse: () => null ,
475+ );
465476
466- _effectiveController.text = lvItemPicked;
467- onChangedHandler (lvItemPicked);
477+ if (_item != null ) {
478+ _labelController.text = _item['label' ];
479+ _effectiveController.text = lvItemPicked;
480+ onChangedHandler (lvItemPicked);
481+ }
468482 }
469483 }
470484
0 commit comments