Как узнать текущую страну устройства, не спрашивая разрешения на местоположение? Флаттер

Я просто хочу знать, в какой стране находится устройство. Ни улица, ни город, ни провинция. Просто страна. Я должен иметь возможность получать такую ​​грубую информацию, не спрашивая у пользователя разрешения на местоположение, я вижу много приложений и веб-сайтов, которые каким-то образом знают, в какой стране я сейчас нахожусь, не спрашивая меня раньше ни о чем.

Есть ли способ сделать это, который работает как на Android, так и на iOS с Flutter?

(необязательно, но приветствуется) Если для этого абсолютно необходим API. Какой из них будет самым дешевым?


person user6288393    schedule 06.09.2020    source источник


Ответы (2)


попробуй это:

импортировать пакет: http / http.dart как http;

try {
      http.get('http://ip-api.com/json').then((value) {
      print(json.decode(value.body)['country'].toString());
      });
    } catch (err) {
      //handleError 
   }
person farouk osama    schedule 06.09.2020
comment
Стоит .. :) но эти услуги платные при массовом использовании. - person Ameer; 01.06.2021

Вы можете использовать службу геолокации IP, например Ipregistry:

import 'package:http/http.dart' as http;

Future<String> lookupUserCountry() async {
  final response = await http.get('https://api.ipregistry.co?key=tryout');

  if (response.statusCode == 200) {
    return json.decode(response.body)['location']['country']['name'];
  } else {
    throw Exception('Failed to get user country from IP address');
  }
}

Обратите внимание, что на Android требуется разрешение android.permission.INTERNET.

person Laurent    schedule 01.10.2020