cupertino_country_picker 1.0.2
cupertino_country_picker: ^1.0.2 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
CountryHelper.getByCountryCode('IN'); // 🇮🇳 India
CountryHelper.getByName('Germany'); // 🇩🇪 Germany
CountryHelper.getByCallingCode('+44'); // 🇬🇧 United Kingdom
CountryHelper.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 = CountryHelper.getByCountryCode('US');
print(country?.name); // United States
🔹 Get by Country Name #
final country = CountryHelper.getByName('Japan');
print(country?.callingCode); // +81
🔹 Get by Calling Code #
final country = CountryHelper.getByCallingCode('+49');
print(country?.name); // Germany
🔹 Search Country by Query #
final results = CountryHelper.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 = CountryHelper.getByCountryCode('IN');
if (country != null) {
Image.asset(
country.flag,
package: CountryHelper.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.