微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter未经用户许可即可获取用户所在的国家/地区

如何解决Flutter未经用户许可即可获取用户所在的国家/地区

我有一个Blog App,其中我编写了Global的Bussiness内容以及一些特定于国家/地区的内容。像印度,印度尼西亚等的特殊职位。

这就是为什么我需要一种方法来查找用户要从哪个国家/地区提供特定内容

但是,我不想使用GeoLocator插件,因为它将询问 位置用户。我只想要使用者的国家/地区,而不想要特定 位置,但权限对话框未指定可以 用户担心此应用为何需要位置权限。那是 为什么我想要一种无需隐式许可即可获取用户国家的方法 对话框询问他们的位置。

我尝试了以下方法,但是没有一个给出确切的国家名称

import 'dart:io' show Platform;

String localeName = Platform.localeName;

// this returns language device is using which mostly comes us en_US so this is of no use


Locale myLocale = Localizations.localeOf(context);
// This returned the US as the country despite the App being opened and used in India.

解决方法

好吧,我终于找到了一种获取用户所在国家的简单方法。

http://ip-api.com/json

此链接以JSON格式返回用户的位置。因此,现在所有要做的就是向上述链接/ API发出Get请求,并将JSON解码为Map。

对于首次安装HTTP软件包:

Pubspec.yaml:

dependencies:
  http:

代码:

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

Response data = await http.get('http://ip-api.com/json');
Map data = jsonDecode(data.body);
String country = data['country'];
,

语言环境为您提供设备用户设置的语言。它不一定表示他们的出生国家。它绝对不会告诉您他们的居住国。在许多情况下,该人可能是语言代码所在的国家/地区,但这并不能保证。知道它们在哪里的唯一方法是按位置。

更新 关于您的评论。如果您是根据从设备区域设置获得的语言代码来获取国家/地区名称,那么请看一下这篇文章。我自己没有尝试过,但看起来很有希望。 https://dev.to/thealphamerc/get-search-filter-countries-data-using-countryprovider-flutter-plugin-1epc

,

尝试

import 'dart:io' show Platform;

String localeName = Platform.localeName

或尝试

请使用软件包devicelocale 我已经在真实设备上进行了测试,效果很好

代码段

String locale = await Devicelocale.currentLocale;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。