cupertino_country_picker 1.0.2 copy "cupertino_country_picker: ^1.0.2" to clipboard
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.

3
likes
0
points
21
downloads

Publisher

unverified uploader

Weekly Downloads

An iOS-style country picker with flags, dial codes, and search—ideal for phone inputs and region selection in Flutter apps.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, simple_animations, supercharged

More

Packages that depend on cupertino_country_picker