diff --git a/lib/country_code_picker.dart b/lib/country_code_picker.dart index d444c79..276aaa9 100644 --- a/lib/country_code_picker.dart +++ b/lib/country_code_picker.dart @@ -71,6 +71,9 @@ class CountryCodePicker extends StatefulWidget { /// Set to true if you want to hide the search part final bool hideSearch; + /// Set to true if you want to show drop down button + final bool showDropDownButton; + CountryCodePicker({ this.onChanged, this.onInit, @@ -99,6 +102,7 @@ class CountryCodePicker extends StatefulWidget { this.comparator, this.countryFilter, this.hideSearch = false, + this.showDropDownButton = false, this.dialogSize, this.dialogBackgroundColor, this.closeIcon = const Icon(Icons.close), @@ -110,7 +114,7 @@ class CountryCodePicker extends StatefulWidget { List jsonList = codes; List elements = - jsonList.map((json) => CountryCode.fromJson(json)).toList(); + jsonList.map((json) => CountryCode.fromJson(json)).toList(); if (comparator != null) { elements.sort(comparator); @@ -118,12 +122,12 @@ class CountryCodePicker extends StatefulWidget { if (countryFilter != null && countryFilter.isNotEmpty) { final uppercaseCustomList = - countryFilter.map((c) => c.toUpperCase()).toList(); + countryFilter.map((c) => c.toUpperCase()).toList(); elements = elements .where((c) => - uppercaseCustomList.contains(c.code) || - uppercaseCustomList.contains(c.name) || - uppercaseCustomList.contains(c.dialCode)) + uppercaseCustomList.contains(c.code) || + uppercaseCustomList.contains(c.name) || + uppercaseCustomList.contains(c.dialCode)) .toList(); } @@ -154,6 +158,7 @@ class CountryCodePickerState extends State { direction: Axis.horizontal, mainAxisSize: MainAxisSize.min, children: [ + if (widget.showFlagMain != null ? widget.showFlagMain : widget.showFlag) @@ -171,6 +176,7 @@ class CountryCodePickerState extends State { ), ), ), + if (!widget.hideMainText) Flexible( fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose, @@ -178,10 +184,25 @@ class CountryCodePickerState extends State { widget.showOnlyCountryWhenClosed ? selectedItem.toCountryStringOnly() : selectedItem.toString(), - style: widget.textStyle ?? Theme.of(context).textTheme.button, + style: widget.textStyle ?? Theme + .of(context) + .textTheme + .button, overflow: widget.textOverflow, ), ), + if(widget.showDropDownButton) + Flexible( + flex: widget.alignLeft ? 0 : 1, + fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose, + child: Padding( + padding: widget.alignLeft + ? const EdgeInsets.only(right: 16.0, left: 8.0) + : const EdgeInsets.only(right: 16.0), + child: Icon(Icons.arrow_drop_down, color: Colors.grey, + size: widget.flagWidth,) + ), + ), ], ), ); @@ -204,9 +225,9 @@ class CountryCodePickerState extends State { if (oldWidget.initialSelection != widget.initialSelection) { if (widget.initialSelection != null) { selectedItem = elements.firstWhere( - (e) => - (e.code.toUpperCase() == - widget.initialSelection.toUpperCase()) || + (e) => + (e.code.toUpperCase() == + widget.initialSelection.toUpperCase()) || (e.dialCode == widget.initialSelection) || (e.name.toUpperCase() == widget.initialSelection.toUpperCase()), orElse: () => elements[0]); @@ -223,8 +244,8 @@ class CountryCodePickerState extends State { if (widget.initialSelection != null) { selectedItem = elements.firstWhere( - (e) => - (e.code.toUpperCase() == widget.initialSelection.toUpperCase()) || + (e) => + (e.code.toUpperCase() == widget.initialSelection.toUpperCase()) || (e.dialCode == widget.initialSelection) || (e.name.toUpperCase() == widget.initialSelection.toUpperCase()), orElse: () => elements[0]); @@ -234,13 +255,13 @@ class CountryCodePickerState extends State { favoriteElements = elements .where((e) => - widget.favorite.firstWhere( - (f) => - e.code.toUpperCase() == f.toUpperCase() || - e.dialCode == f || - e.name.toUpperCase() == f.toUpperCase(), - orElse: () => null) != - null) + widget.favorite.firstWhere( + (f) => + e.code.toUpperCase() == f.toUpperCase() || + e.dialCode == f || + e.name.toUpperCase() == f.toUpperCase(), + orElse: () => null) != + null) .toList(); }