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

use*_*393 4 geolocation ip-geolocation flutter

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

有没有什么方法可以在 Android 和 iOS 上使用 Flutter 做到这一点?

(可选但高度赞赏)如果 API 是绝对必要的。哪个会最便宜?

far*_*ama 15

尝试这个:

将 'package:http/http.dart' 导入为 http;

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


Lau*_*ent 5

您可以使用 IP 地理定位服务,例如Ipreregistry

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');
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在 Android 上它需要权限android.permission.INTERNET