PackageTrack
Sign in Get early access

country_picker

A flutter package to select a country from a list of countries.

2.0.28 113K downloads/mo #1073 most downloaded on pub.dev Daniel-Ioannou/flutter_country_picker

What this package is like to depend on

Last release 2 months ago

10 Jun 2026

Ships unpredictably

gaps range from 2 weeks to 1.6 years

Nearly every release is documented

notes for 40 of 40 stable releases

Nothing withdrawn

no release was ever pulled

6 years old

40 releases · first in 2020

1 release in the last 12 months

see the full history below

Release timeline

40 releases · Aug 2020 to Jun 2026
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 40
  1. 2.0.28 10 Jun 2026
    Release notes

    In this version:

    • Fixed getFromPhoneCode failing when multiple countries share the same phone code.
    • Fixed incomplete phone prefix.
    • Add optional header. Custom list header above search bar
      showCountryPicker(
          context: context,
          header: Padding(
              padding: const EdgeInsets.only(top: 10.0, bottom: 10.0, left: 20.0, right: 20.0),
              child: const Text(
                 'Select your country',
                 style: TextStyle(
                    fontSize: 22,
                    fontWeight: FontWeight.bold,
                 ),
              ),
          ),
          onSelect: (Country country) {
              print('Select country: ${country.displayName}');
          },
      );
    • Add an option to show the drag handle
      showCountryPicker(
          context: context,
          showDragHandle: true,
          onSelect: (Country country) {
              print('Select country: ${country.displayName}');
          },
      );
    Open source →
    Release notes
    • Fixed getFromPhoneCode failing when multiple countries share the same phone code.

    • Fixed incomplete phone prefix.

    • Add optional header. Custom list header above search bar

      showCountryPicker(
          context: context,
          header: Padding(
              padding: const EdgeInsets.only(top: 10.0, bottom: 10.0, left: 20.0, right: 20.0),
              child: const Text(
                 'Select your country',
                 style: TextStyle(
                    fontSize: 22,
                    fontWeight: FontWeight.bold,
                 ),
              ),
          ),
          onSelect: (Country country) {
              print('Select country: ${country.displayName}');
          },
      );
      
    • Add an option to show the drag handle

      showCountryPicker(
          context: context,
          showDragHandle: true,
          onSelect: (Country country) {
              print('Select country: ${country.displayName}');
          },
      );
      
    Open source →
  2. 2.0.27 10 Nov 2024
    Release notes

    In this version:

    • Add support for Persian (FA) localization
    • Add support for Danish (DA) localization
    • Fix Ireland in French localization
    • Fix East Timor in Arabic localization
    • Fix Benin in russian localization
    • Change Macedonia's country name to North Macedonia
    • Add findByPhoneCode: Returns a single country if it matches the given phone code.
      var austria =CountryService().findByPhoneCode("43");
    Open source →
    Release notes
    • Add support for Persian (FA) localization
    • Add support for Danish (DA) localization
    • Fix Ireland in French localization
    • Fix East Timor in Arabic localization
    • Fix Benin in russian localization
    • Change Macedonia's country name to North Macedonia
    • Add findByPhoneCode: Returns a single country if it matches the given phone code.
      var austria =CountryService().findByPhoneCode("43");
      
    Open source →
  3. 2.0.26 12 May 2024
    Release notes

    In this version:

    • Fix Turkish localization
    • Add moveAlongWithKeyboard: An optionalargument can be used to move bottomSheet along with keyboard when textfield is focused. It could be useful when bottomSheet height is smaller than half of the screen. Otherwise it shouldn't be set. It has a default value of false.
      showCountryPicker(
        context: context,
        moveAlongWithKeyboard: true,
        countryListTheme: CountryListThemeData(
         bottomSheetHeight: 500,
        ),
        onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
    Open source →
    Release notes
    • Fix Turkish localization
      • Add moveAlongWithKeyboard: An optionalargument can be used to move bottomSheet along with keyboard when textfield is focused. It could be useful when bottomSheet height is smaller than half of the screen. Otherwise it shouldn't be set. It has a default value of false.
        showCountryPicker(
          context: context,
          moveAlongWithKeyboard: true,
          countryListTheme: CountryListThemeData(
           bottomSheetHeight: 500,
          ),
          onSelect: (Country country) => print('Select country: ${country.displayName}'),
        );
        
    Open source →
  4. 2.0.25 27 Feb 2024
    Release notes

    In this version:

    • Add support for Haitian Creole (HT) localization
    • Add support for Slovak (SK) localization
    • Add support for Bulgarian (BG) localization
    • Add support for Romanian (RO) localization
    • Add support for Catala (CA) localization
    • Add support for Hebrew (HE) localization
    Open source →
    Release notes
    • Add support for Haitian Creole (HT) localization
      • Add support for Slovak (SK) localization
      • Add support for Bulgarian (BG) localization
      • Add support for Romanian (RO) localization
      • Add support for Catala (CA) localization
      • Add support for Hebrew (HE) localization
    Open source →
  5. 2.0.24 29 Jan 2024
    Release notes

    In this version:

    • Add option for bottom sheet Width.
      showCountryPicker(
        context: context,
        countryListTheme: CountryListThemeData(
         bottomSheetWidth: 500, // Optional. Country list modal Width
        ),
        onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
      • Add emojiFontFamilyFallback
    Open source →
    Release notes
    • Add option for bottom sheet Width.
      showCountryPicker(
        context: context,
        countryListTheme: CountryListThemeData(
         bottomSheetWidth: 500, // Optional. Country list modal Width
        ),
        onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
      
      • Add emojiFontFamilyFallback
    Open source →
  6. 2.0.23 02 Dec 2023
    Release notes

    In this version:

    • Export CustomFlagBuilder
    • Add parameter useRootNavigator
    Open source →
    Release notes
    • Export CustomFlagBuilder
      • Add parameter useRootNavigator
    Open source →
  7. 2.0.22 30 Oct 2023
    Release notes

    In this version:

    • Add support for Czech localization
    • Fix typos Korean
    Open source →
    Release notes
    • Add support for Czech localization
      • typos Korean
    Open source →
  8. 2.0.21 03 Sep 2023
    Release notes

    In this version:

    • Add support for Korean localization
    • Add support for Japanese localization
    • Add support for Indonesian localization
    • Fix Windows and web flag
    Open source →
    Release notes
    • Add support for Korean localization
      • Add support for Japanese localization
      • Add support for Indonesian localization
      • Fix Windows and web flag
    Open source →
  9. 2.0.20 04 Mar 2023
    Release notes

    In this version:

    • Add support for Italian localization
    • Fix French Translations
    • UI filling fix
    Open source →
    Release notes
    • Add support for Italian localization
      • Fix French Translations
      • UI filling fix
    Open source →
  10. 2.0.19 17 Dec 2022
    Release notes

    In this version:

    • Add support for Dutch localization
    • Add parsePhoneCode and tryParsePhoneCode
    Open source →
    Release notes
    • Add support for Dutch localization
      • Add parsePhoneCode and tryParsePhoneCode
    Open source →
  11. 2.0.18 02 Dec 2022
    Release notes
    • Fix Hindi Translations
      • Removed old country codes for Kosovo (+381 & +386)
    Open source →
  12. 2.0.17 08 Nov 2022
    Release notes
    • Add option to hide search bar
        showCountryPicker(
          context: context,
          showSearch: false,
          onSelect: (Country country) => print('Select country: ${country.displayName}'),
        );
      
      • Add searchTextStyle
          showCountryPicker(
            context: context,
            countryListTheme: CountryListThemeData(
              searchTextStyle: TextStyle( // Optional. Styles the text in the search field
                color: Colors.blue,
                fontSize: 18,
              ),
            ),
            onSelect: (Country country) => print('Select country: ${country.displayName}'),
          );
        
      • Removed the need of worldwide.png and changed to '🌍' emoji
    Open source →
  13. 2.0.16 24 Aug 2022
    Release notes
    • Add support for Latvian localization
      • Add support for Lithuanian localization
    Open source →
  14. 2.0.15 02 May 2022
    Release notes
    • Add support for German localization
      • Add favorite option.
        • Can be used to to show the favorite countries at the top of the list.
        • It takes a list of country code(iso2).
          showCountryPicker(
            context: context,
            favorite: <String>['SE', 'MC'],
            onSelect: (Country country) {
              print('Select country: ${country.displayName}');
            },
          );
          
      • Implemented Country Service
      • package assets
    Open source →
  15. 2.0.14 11 Apr 2022
    Release notes
    • Add support for country search by phone code
    Open source →
  16. 2.0.13 05 Apr 2022
    Release notes
    • Add getter for flag emoji in Country model
      • Add option for bottom sheet height.
        showCountryPicker(
          context: context,
          countryListTheme: CountryListThemeData(
           bottomSheetHeight: 500, // Optional. Country list modal height
          ),
          onSelect: (Country country) => print('Select country: ${country.displayName}'),
        );
        
    Open source →
  17. 2.0.12 28 Feb 2022
    Release notes
    • Update example android gradle
      • Kurdish translation for Curaçao name
    Open source →
  18. 2.0.11 01 Feb 2022
    Release notes
    • Eswatini name
    • Italy code at Turkish localization
    • Add optional argument for showing "World Wide" option at the beginning of the list
      showCountryPicker(
        context: context,
        showWorldWide: true,
        onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
      
    Open source →
  19. 2.0.10 19 Jan 2022
    Release notes
    • Add support for French localization
      • Add support for Kurdish localization
    Open source →
  20. 2.0.9 22 Nov 2021
    Release notes
    • Add support for Estonian localization
    Open source →
  21. 2.0.8 13 Sep 2021
    Release notes
    • Add support for Arabic localization
      • Add support for Croatian localization
      • Add options to autofocus at search TextField.
        showCountryPicker(
          context: context,
          searchAutofocus: true,
          onSelect: (Country country) => print('Select country: ${country.displayName}'),
        );
        
    Open source →
  22. 2.0.7 28 Jul 2021
    Release notes
    • Add support for Turkish localization
    Open source →
  23. 2.0.6 02 Jul 2021
    Release notes
    • Add support for Nepali and Hindi localization
    Open source →
  24. 2.0.5 31 May 2021
    Release notes
    • Add styling options for the border-radius and the search field.
      showCountryPicker(
        context: context,
        countryListTheme: CountryListThemeData(
          // Optional. Sets the border radius for the bottomsheet.
          borderRadius: BorderRadius.only(
            topLeft: Radius.circular(40.0),
            topRight: Radius.circular(40.0),
          ),
          // Optional. Styles the search field.
          inputDecoration: InputDecoration(
            labelText: 'Search',
            hintText: 'Start typing to search',
            preIcon: const Icon(Icons.search),
            border: OutlineInputBorder(
              borderSide: BorderSide(
                color: const Color(0xFF8C98A8).withOpacity(0.2),
              ),
            ),
          ),
        ),
        onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
      
    Open source →
  25. 2.0.4 12 Apr 2021
    Release notes
    • Add CountryParser
    Open source →
  26. 2.0.3 30 Mar 2021
    Release notes
    • Add Ukrainian, Russian, and Polish translations
      • Add onClosed callback
    Open source →
  27. 2.0.2 23 Mar 2021
    Release notes
    • Add support for Norwegian localization
    Open source →
  28. 2.0.1 15 Mar 2021
    Release notes
    • Implemented country list theme
      showCountryPicker(
        context: context,
        countryListTheme: CountryListThemeData(
          flagSize: 25,
          backgroundColor: Colors.white,
          textStyle: TextStyle(fontSize: 16, color: Colors.blueGrey),
        ),
        onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
      
    Open source →
  29. 2.0.0 09 Mar 2021
    Release notes
    • Migrated to null safety
    Open source →
  30. 1.1.4 18 Feb 2021
    Release notes
    • Add support for Spanish and Portuguese localization.
      • If showPhoneCode is false remove duplicates country
    Open source →
  31. 1.1.3 10 Dec 2020
    Release notes
    • Localize label and hint of search text field
    Open source →
  32. 1.1.2 11 Oct 2020
    Release notes
    • Add support for Greek localization.
      • At search change contains to startsWith.
      • Add country filter option.
        • Can be used to uses filter the countries list (optional).
        • It takes a list of country code(iso2).
        • Can't provide both exclude and countryFilter
         showCountryPicker(
           context: context,
           countryFilter: <String>['AT', 'GB', 'DK', 'DE', 'FR', 'GR'], //It takes a list of country code(iso2).
           onSelect: (Country country) => print('Select country: ${country.displayName}'),
         );
        
    Open source →
  33. 1.1.1 24 Sep 2020
    Release notes
    • Search on localizations.
    Open source →
  34. 1.1.0 19 Sep 2020
    Release notes

    Implement localization.

    Add the CountryLocalizations.delegate in the list of your app delegates.

    MaterialApp(
          supportedLocales: [
            const Locale('en'),
            const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'), // Generic Simplified Chinese 'zh_Hans'
            const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant'), // Generic traditional Chinese 'zh_Hant'
          ],
          localizationsDelegates: [
            CountryLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          home: HomePage(),
     );
    

    Supported languages:

    • English
    • Simplified Chinese
    • Traditional Chinese
    Open source →
  35. 1.0.5 31 Aug 2020
    Release notes
    • Update documentation.
    Open source →
  36. 1.0.4 27 Aug 2020
    Release notes
    • Implement search.
    Open source →
  37. 1.0.3 22 Aug 2020
    Release notes
    • Add show phone code option.
    Open source →
  38. 1.0.2 18 Aug 2020
    Release notes
    • Add exclude countries option.
      Can be used to exclude(remove) one ore more country from the countries list
      showCountryPicker(
         context: context,
         exclude: <String>['KN', 'MF'], //It takes a list of country code(iso2).
         onSelect: (Country country) => print('Select country: ${country.displayName}'),
      );
      
    Open source →
  39. 1.0.1 12 Aug 2020
    Release notes
    • Add documentation.
    Open source →
  40. 1.0.0 11 Aug 2020
    Release notes
    • Initial developers preview release.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive