Merge pull request #124 from sherifhasan/master
Update country_code_picker.dart
This commit is contained in:
@@ -71,6 +71,9 @@ class CountryCodePicker extends StatefulWidget {
|
|||||||
/// Set to true if you want to hide the search part
|
/// Set to true if you want to hide the search part
|
||||||
final bool hideSearch;
|
final bool hideSearch;
|
||||||
|
|
||||||
|
/// Set to true if you want to show drop down button
|
||||||
|
final bool showDropDownButton;
|
||||||
|
|
||||||
CountryCodePicker({
|
CountryCodePicker({
|
||||||
this.onChanged,
|
this.onChanged,
|
||||||
this.onInit,
|
this.onInit,
|
||||||
@@ -99,6 +102,7 @@ class CountryCodePicker extends StatefulWidget {
|
|||||||
this.comparator,
|
this.comparator,
|
||||||
this.countryFilter,
|
this.countryFilter,
|
||||||
this.hideSearch = false,
|
this.hideSearch = false,
|
||||||
|
this.showDropDownButton = false,
|
||||||
this.dialogSize,
|
this.dialogSize,
|
||||||
this.dialogBackgroundColor,
|
this.dialogBackgroundColor,
|
||||||
this.closeIcon = const Icon(Icons.close),
|
this.closeIcon = const Icon(Icons.close),
|
||||||
@@ -110,7 +114,7 @@ class CountryCodePicker extends StatefulWidget {
|
|||||||
List<Map> jsonList = codes;
|
List<Map> jsonList = codes;
|
||||||
|
|
||||||
List<CountryCode> elements =
|
List<CountryCode> elements =
|
||||||
jsonList.map((json) => CountryCode.fromJson(json)).toList();
|
jsonList.map((json) => CountryCode.fromJson(json)).toList();
|
||||||
|
|
||||||
if (comparator != null) {
|
if (comparator != null) {
|
||||||
elements.sort(comparator);
|
elements.sort(comparator);
|
||||||
@@ -118,12 +122,12 @@ class CountryCodePicker extends StatefulWidget {
|
|||||||
|
|
||||||
if (countryFilter != null && countryFilter.isNotEmpty) {
|
if (countryFilter != null && countryFilter.isNotEmpty) {
|
||||||
final uppercaseCustomList =
|
final uppercaseCustomList =
|
||||||
countryFilter.map((c) => c.toUpperCase()).toList();
|
countryFilter.map((c) => c.toUpperCase()).toList();
|
||||||
elements = elements
|
elements = elements
|
||||||
.where((c) =>
|
.where((c) =>
|
||||||
uppercaseCustomList.contains(c.code) ||
|
uppercaseCustomList.contains(c.code) ||
|
||||||
uppercaseCustomList.contains(c.name) ||
|
uppercaseCustomList.contains(c.name) ||
|
||||||
uppercaseCustomList.contains(c.dialCode))
|
uppercaseCustomList.contains(c.dialCode))
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,6 +158,7 @@ class CountryCodePickerState extends State<CountryCodePicker> {
|
|||||||
direction: Axis.horizontal,
|
direction: Axis.horizontal,
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
|
|
||||||
if (widget.showFlagMain != null
|
if (widget.showFlagMain != null
|
||||||
? widget.showFlagMain
|
? widget.showFlagMain
|
||||||
: widget.showFlag)
|
: widget.showFlag)
|
||||||
@@ -171,6 +176,7 @@ class CountryCodePickerState extends State<CountryCodePicker> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
if (!widget.hideMainText)
|
if (!widget.hideMainText)
|
||||||
Flexible(
|
Flexible(
|
||||||
fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose,
|
fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose,
|
||||||
@@ -178,10 +184,25 @@ class CountryCodePickerState extends State<CountryCodePicker> {
|
|||||||
widget.showOnlyCountryWhenClosed
|
widget.showOnlyCountryWhenClosed
|
||||||
? selectedItem.toCountryStringOnly()
|
? selectedItem.toCountryStringOnly()
|
||||||
: selectedItem.toString(),
|
: selectedItem.toString(),
|
||||||
style: widget.textStyle ?? Theme.of(context).textTheme.button,
|
style: widget.textStyle ?? Theme
|
||||||
|
.of(context)
|
||||||
|
.textTheme
|
||||||
|
.button,
|
||||||
overflow: widget.textOverflow,
|
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<CountryCodePicker> {
|
|||||||
if (oldWidget.initialSelection != widget.initialSelection) {
|
if (oldWidget.initialSelection != widget.initialSelection) {
|
||||||
if (widget.initialSelection != null) {
|
if (widget.initialSelection != null) {
|
||||||
selectedItem = elements.firstWhere(
|
selectedItem = elements.firstWhere(
|
||||||
(e) =>
|
(e) =>
|
||||||
(e.code.toUpperCase() ==
|
(e.code.toUpperCase() ==
|
||||||
widget.initialSelection.toUpperCase()) ||
|
widget.initialSelection.toUpperCase()) ||
|
||||||
(e.dialCode == widget.initialSelection) ||
|
(e.dialCode == widget.initialSelection) ||
|
||||||
(e.name.toUpperCase() == widget.initialSelection.toUpperCase()),
|
(e.name.toUpperCase() == widget.initialSelection.toUpperCase()),
|
||||||
orElse: () => elements[0]);
|
orElse: () => elements[0]);
|
||||||
@@ -223,8 +244,8 @@ class CountryCodePickerState extends State<CountryCodePicker> {
|
|||||||
|
|
||||||
if (widget.initialSelection != null) {
|
if (widget.initialSelection != null) {
|
||||||
selectedItem = elements.firstWhere(
|
selectedItem = elements.firstWhere(
|
||||||
(e) =>
|
(e) =>
|
||||||
(e.code.toUpperCase() == widget.initialSelection.toUpperCase()) ||
|
(e.code.toUpperCase() == widget.initialSelection.toUpperCase()) ||
|
||||||
(e.dialCode == widget.initialSelection) ||
|
(e.dialCode == widget.initialSelection) ||
|
||||||
(e.name.toUpperCase() == widget.initialSelection.toUpperCase()),
|
(e.name.toUpperCase() == widget.initialSelection.toUpperCase()),
|
||||||
orElse: () => elements[0]);
|
orElse: () => elements[0]);
|
||||||
@@ -234,13 +255,13 @@ class CountryCodePickerState extends State<CountryCodePicker> {
|
|||||||
|
|
||||||
favoriteElements = elements
|
favoriteElements = elements
|
||||||
.where((e) =>
|
.where((e) =>
|
||||||
widget.favorite.firstWhere(
|
widget.favorite.firstWhere(
|
||||||
(f) =>
|
(f) =>
|
||||||
e.code.toUpperCase() == f.toUpperCase() ||
|
e.code.toUpperCase() == f.toUpperCase() ||
|
||||||
e.dialCode == f ||
|
e.dialCode == f ||
|
||||||
e.name.toUpperCase() == f.toUpperCase(),
|
e.name.toUpperCase() == f.toUpperCase(),
|
||||||
orElse: () => null) !=
|
orElse: () => null) !=
|
||||||
null)
|
null)
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user