I'm working on flutter app and I have a text widget where I want to show user's current country code based on his location without any dropdown. I'm getting value like "IN","US" using Locale, but I don't want it, I need numeric country code like 91 (for India), 1 (for US) etc. anyone help me please.
CodePudding user response:
You can use country_codes package:
Install:
dependencies:
country_codes: ^2.0.1
Usage:
await CountryCodes.init(); // Optionally, you may provide a `Locale` to get countrie's localizadName
final CountryDetails details = CountryCodes.detailsForLocale();
print(details.alpha2Code); // Displays alpha2Code, for example US.
print(details.dialCode); // Displays the dial code, for example 1.
print(details.name); // Displays the extended name, for example United States.
print(details.localizedName);
CodePudding user response:
You can use these files countries.dart and country.dart
Get the user country code from http://ip-api.com/json
with http package and then use it to get the country phone code from countryList
:
Future<String> getCountryPhoneCode() async {
var response = await http.get(Uri.parse('http://ip-api.com/json'));
var jsonResponse = json.decode(response.body);
final isoCode = jsonResponse['countryCode'];
print("country code " isoCode);
return " "
countryList
.firstWhere((element) => element.isoCode == isoCode,
orElse: () => countryList.first)
.phoneCode;
}
I tested this and it works for me but you can improve it to avoid http exceptions