如何在不请求位置许可的情况下获取设备的当前国家/地区?扑

How to get current country of device without asking for location permission? Flutter

我只想知道设备所在的国家/地区。不是街道,不是城市,不是省。只是国家。我应该能够获得那种粗略的信息,而无需向用户询问位置权限,我看到许多应用程序和网站以某种方式知道我目前在哪个国家,而无需事先询问我任何事情。

有什么方法可以在 Android 和 iOS 上与 Flutter 一起使用吗?

(可选但非常感谢)如果绝对需要 API 来执行此操作。哪个最便宜?

试试这个:

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

try {
      http.get('http://ip-api.com/json').then((value) {
      print(json.decode(value.body)['country'].toString());
      });
    } catch (err) {
      //handleError 
   }

您可以使用 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 权限。