Flutter 无需手动许可即可获取用户的国家/地区
Flutter get User's Country without Manual Permission
我有一个博客应用程序,我在其中编写面向全球的业务内容以及一些针对特定国家/地区的内容。点赞印度、印度尼西亚等国的专帖
这就是为什么我需要一种方法来查找用户从哪个国家/地区提供特定内容的原因。
But, I don't want to use the GeoLocator Plugin because It will ask the
User for location. I only want the user's country, not the specific
location but the permission dialog didn't specify that which can make
the user anxious about why this app needs Location Permission. That's
why I want a way to get user's Country without an implicit permission
dialog asking for their location.
我尝试了以下方法,但其中 none 给出了确切的国家/地区名称。
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.
试试这个
import 'dart:io' show Platform;
String localeName = Platform.localeName
或者试试这个
请使用包devicelocale
我用真实设备测试过,它工作正常
代码片段
String locale = await Devicelocale.currentLocale;
Locale 为您提供设备用户设置的语言。它不一定表明他们的出生国。它绝对不会告诉你他们的居住国。在许多情况下,此人可能在语言代码所在的国家/地区,但这并不能保证。知道他们在哪里的唯一方法是通过位置。
更新
关于你的评论。如果您的意思是根据从设备区域设置获得的语言代码从哪里获得国家/地区名称,请查看此 post。我自己没有尝试过,但看起来很有希望。 https://dev.to/thealphamerc/get-search-filter-countries-data-using-countryprovider-flutter-plugin-1epc
好吧,我终于找到了一种获取用户所在国家/地区的简便方法。
此 link returns 用户位置采用 JSON 格式。所以现在要做的就是向上面的 link/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'];
我有一个博客应用程序,我在其中编写面向全球的业务内容以及一些针对特定国家/地区的内容。点赞印度、印度尼西亚等国的专帖
这就是为什么我需要一种方法来查找用户从哪个国家/地区提供特定内容的原因。
But, I don't want to use the GeoLocator Plugin because It will ask the User for location. I only want the user's country, not the specific location but the permission dialog didn't specify that which can make the user anxious about why this app needs Location Permission. That's why I want a way to get user's Country without an implicit permission dialog asking for their location.
我尝试了以下方法,但其中 none 给出了确切的国家/地区名称。
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.
试试这个
import 'dart:io' show Platform;
String localeName = Platform.localeName
或者试试这个
请使用包devicelocale 我用真实设备测试过,它工作正常
代码片段
String locale = await Devicelocale.currentLocale;
Locale 为您提供设备用户设置的语言。它不一定表明他们的出生国。它绝对不会告诉你他们的居住国。在许多情况下,此人可能在语言代码所在的国家/地区,但这并不能保证。知道他们在哪里的唯一方法是通过位置。
更新 关于你的评论。如果您的意思是根据从设备区域设置获得的语言代码从哪里获得国家/地区名称,请查看此 post。我自己没有尝试过,但看起来很有希望。 https://dev.to/thealphamerc/get-search-filter-countries-data-using-countryprovider-flutter-plugin-1epc
好吧,我终于找到了一种获取用户所在国家/地区的简便方法。
此 link returns 用户位置采用 JSON 格式。所以现在要做的就是向上面的 link/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'];