cupertino_country_picker 1.0.4
cupertino_country_picker: ^1.0.4 copied to clipboard
An iOS-style country picker with flags, dial codes, and search—ideal for phone inputs and region selection in Flutter apps.
🌍 Cupertino Country Picker #
A beautiful, customizable iOS-style country picker built with Flutter's Cupertino design system. Easily select countries with flags, calling codes, and search functionality. Perfect for apps that require region selection or phone number inputs.
Loading preview... if it doesn't show, click here
✨ Features #
✅ iOS-style modal bottom sheet picker
✅ Search countries by name or calling code
✅ Built-in country list with flags, codes, and calling codes
✅ Easily retrieve countries using utility methods
✅ Display flag images easily using CountryHelper.packageName
CountryPickerHelper.getByCountryCode('IN'); // 🇮🇳 India
CountryPickerHelper.getByName('Germany'); // 🇩🇪 Germany
CountryPickerHelper.getByCallingCode('+44'); // 🇬🇧 United Kingdom
CountryPickerHelper.getListByQuery('can'); // 🇨🇦 Canada, 🇨🇻 Cape Verde, etc.
🛠 Installation #
Add the package in your pubspec.yaml:
dependencies:
cupertino_country_picker: ^1.0.2
Run:
flutter pub get
🚀 How to Use #
1. Show the Country Picker #
Call the showCupertinoCountryPicker() function anywhere in your app:
import 'package:cupertino_country_picker/cupertino_country_picker.dart';
ElevatedButton(
onPressed: () {
showCupertinoCountryPicker(
context: context,
onCountryPicked: (CountryModel country) {
print('Selected Country: \${country.name}');
},
);
},
child: Text('Pick Country'),
);
🖼 Output: #
A modal bottom sheet appears with a search bar, list of countries, flags, and calling codes.
🧠 Utility Methods #
You can use CountryHelper to get country data programmatically.
🔹 Get by Country Code #
final country = CountryPickerHelper.getByCountryCode('US');
print(country?.name); // United States
🔹 Get by Country Name #
final country = CountryPickerHelper.getByName('Japan');
print(country?.callingCode); // +81
🔹 Get by Calling Code #
final country = CountryPickerHelper.getByCallingCode('+49');
print(country?.name); // Germany
🔹 Search Country by Query #
final results = CountryPickerHelper.getListByQuery('in');
results.forEach((country) => print(country.name));
💡 Example Use Case #
CountryModel? _selectedCountry;
void _pickCountry(BuildContext context) {
showCupertinoCountryPicker(
context: context,
onCountryPicked: (country) {
setState(() {
_selectedCountry = country;
});
},
);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
if(_selectedCountry != null)...[
ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Image.asset(
_selectedCountry!.flag,
package: CountryPickerHelper.packageName,
height: 50,
),
),
const SizedBox(height: 10),
Text(
'Selected Country: ${_selectedCountry!.name}',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
textAlign: TextAlign.center,
),
Text(
'Calling Code: ${_selectedCountry!.callingCode}',
textAlign: TextAlign.center,
),
Text(
'Country Code: ${_selectedCountry!.countryCode}',
textAlign: TextAlign.center,
),
],
ElevatedButton(
onPressed: () => _pickCountry(context),
child: Text('Pick Country'),
)
],
);
}
🖼 Displaying Flag Images #
To display country flag images in your UI, you can use the CountryHelper.packageName with the Image.asset() widget:
final country = CountryPickerHelper.getByCountryCode('IN');
if (country != null) {
Image.asset(
country.flag,
package: CountryPickerHelper.packageName,
width: 32,
height: 20,
);
}
📚 Full Example #
Check the example directory for a working demo.
🧑💻 Contributing #
Feel free to open issues or pull requests to improve this package.
📝 License #
This project is licensed under the MIT License — free to use and distribute. No restrictions, just give credit.