diff --git a/README.md b/README.md index c26218b..e9fbc25 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,36 @@ Just add the `CountryLocalizations.delegate` in the list of your app delegates ], ``` +## Customization + +Here is a list of properties available to customize your widget: + +| Name | Type | Description | +|-|-| +|onChanged| ValueChanged | callback invoked when the selection changes | +|onInit| ValueChanged | callback invoked during initialization of the widget | +|initialSelection| String | used to set the initial selected value | +|favorite| List | used to populate the favorite country list | +|textStyle| TextStyle | TextStyle applied to the widget button | +|padding| EdgeInsetsGeometry | the padding applied to the button | +|showCountryOnly| bool | true if you want to see only the countries in the selection dialog | +|searchDecoration| InputDecoration | decoration applied to the TextField search widget | +|searchStyle| TextStyle | style applied to the TextField search widget text | +|emptySearchBuilder| WidgetBuilder | use this to customize the widget used when the search returns 0 elements | +|builder| Function(CountryCode) | use this to build a custom widget instead of the default FlatButton | +|enabled| bool | set to false to disable the widget | +|textOverflow| TextOverflow | the button text overflow behaviour | +|dialogSize| Size | the size of the selection dialog | +|countryFilter| List | uses a list of strings to filter a sublist of countries | +|showOnlyCountryWhenClosed| bool | if true it'll show only the country | +|alignLeft| bool | aligns the flag and the Text to the left | +|showFlag| bool | shows the flag everywhere | +|showFlagMain| bool | shows the flag only when closed | +|showFlagDialog| bool | shows the flag only in dialog | +|flagWidth| double | the width of the flags | +|comparator| Comparator | use this to sort the countries in the selection dialog | +|hideSearch| bool | if true the search feature will be disabled | + ## Contributions Contributions of any kind are more than welcome! Feel free to fork and improve country_code_picker in any way you want, make a pull request, or open an issue. diff --git a/example/lib/main.dart b/example/lib/main.dart index 5bf6834..dc33bff 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -18,6 +18,7 @@ class _MyAppState extends State { Locale('en'), Locale('it'), Locale('fr'), + Locale('es'), ], localizationsDelegates: [ CountryLocalizations.delegate, diff --git a/lib/country_code_picker.dart b/lib/country_code_picker.dart index 9a2eb54..9602e5c 100644 --- a/lib/country_code_picker.dart +++ b/lib/country_code_picker.dart @@ -118,9 +118,9 @@ class CountryCodePickerState extends State { Widget build(BuildContext context) { Widget _widget; if (widget.builder != null) - _widget = InkWell( + _widget = GestureDetector( onTap: showCountryCodePickerDialog, - child: widget.builder(selectedItem.localize(context)), + child: widget.builder(selectedItem), ); else { _widget = FlatButton( @@ -175,7 +175,8 @@ class CountryCodePickerState extends State { (e) => (e.code.toUpperCase() == widget.initialSelection.toUpperCase()) || - (e.dialCode == widget.initialSelection.toString()), + (e.dialCode == widget.initialSelection) || + (e.name.toUpperCase() == widget.initialSelection.toUpperCase()), orElse: () => elements[0]); } else { selectedItem = elements[0]; @@ -190,7 +191,8 @@ class CountryCodePickerState extends State { selectedItem = elements.firstWhere( (e) => (e.code.toUpperCase() == widget.initialSelection.toUpperCase()) || - (e.dialCode == widget.initialSelection.toString()), + (e.dialCode == widget.initialSelection) || + (e.name.toUpperCase() == widget.initialSelection.toUpperCase()), orElse: () => elements[0]); } else { selectedItem = elements[0]; @@ -199,7 +201,10 @@ class CountryCodePickerState extends State { favoriteElements = elements .where((e) => widget.favorite.firstWhere( - (f) => e.code == f.toUpperCase() || e.dialCode == f.toString(), + (f) => + e.code.toUpperCase() == f.toUpperCase() || + e.dialCode == f || + e.name.toUpperCase() == f.toUpperCase(), orElse: () => null) != null) .toList();