Skip to content

A Flutter plugin to fetch list of countries and their code from device

License

Notifications You must be signed in to change notification settings

M123-dev/flutter_iso_countries

This branch is 7 commits behind anoop4real/flutter_iso_countries:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6d93694 · Sep 25, 2021

History

36 Commits
Sep 25, 2021
Sep 25, 2021
Sep 25, 2021
May 16, 2020
Sep 25, 2021
Nov 30, 2019
Nov 30, 2019
Nov 30, 2019
Sep 25, 2021
Nov 30, 2019
Sep 25, 2021
Nov 30, 2019
May 16, 2020
Mar 20, 2021
Sep 25, 2021

Repository files navigation

iso_countries

A plugin for fetching ISOCountries data from device OS. Name of countries can be obtained in different languages by passing in the language format. ("fr-fr", "de-de"). No values are HARDCODED, country details are fetched from OS.

Android: API level 21 required

iso_countries

Update

Version 2.1.0 Android Embedding V2

Update

Version 2.0.0 updated to support null safety

Usage

For detailed use, see the example.

Fetch Default (English)

    List<Country>? countries;
    try {
      countries = await IsoCountries.iso_countries;
    } on PlatformException {
      countries = null;
    }

Fetch based on Language


    List<Country>? countries;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      // If you need country names in a specific language please pass language code sample
      // fr-fr, en-en, de-de... IMPORTANT: In Android there seem to be some issue with case
      // so passing fr-FR wont work
      countries = await IsoCountries.iso_countries_for_locale('fr-fr');
    } on PlatformException {
      countries = null;
    }
    

Usage in Widget as function

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> prepareDefaultCountries() async {
    List<Country>? countries;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      countries = await IsoCountries.iso_countries;
    } on PlatformException {
      countries = null;
    }
    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) {
      return;
    }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> prepareLocaleSpecificCountries() async {
    List<Country>? countries;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      // If you need country names in a specific language please pass language code sample
      // fr-fr, en-en, de-de... IMPORTANT: In Android there seem to be some issue with case
      // so passing fr-FR wont work
      countries = await IsoCountries.iso_countries_for_locale('fr-fr');
    } on PlatformException {
      countries = null;
    }
    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) {
      return;
    }

    setState(() {
      if (countries != null) {
        countryList = countries;
      }
    });
  }
  

New API Added

Passing in a country code( 2 letter) and an optional localeIdentifier( eg 'de-de', 'fr-fr'), you can get a country object with a translated name.

// Platform messages are asynchronous, so we initialize in an async method.
// IMPORTANT: Make sure the country code passed in is valid, in Android passing
// in a wrong country code, returns the country name as passed in country code not sure why.
Future<void> getCountryForCodeWithIdentifier(
    String code, String localeIdentifier) async {
  // Platform messages may fail, so we use a try/catch PlatformException.
  try {
    country = await IsoCountries.iso_country_for_code_for_locale(code,
        locale_identifier: localeIdentifier);
  } on PlatformException {
    country = null;
  }
  // If the widget was removed from the tree while the asynchronous platform
  // message was in flight, we want to discard the reply rather than calling
  // setState to update our non-existent appearance.
  if (!mounted) {
    return;
  }

  setState(() {
    print(country?.name);
  });
}

Note

If you are getting any error related to pods while running iOS example, then please delete the podfile and podfile.lock and re-run.

About

A Flutter plugin to fetch list of countries and their code from device

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 44.7%
  • Kotlin 23.8%
  • Swift 18.5%
  • Ruby 10.9%
  • Objective-C 2.1%