关于iOS和安卓原生那边的配置,看文档就ok,这边主要看flutter
这个要在第一次打开App弹出隐私协议弹窗的时候调用,然后设置apiKey,这俩个Key是在高德开放平台申请的
AMapFlutterLocation.updatePrivacyAgree(true);
AMapFlutterLocation.updatePrivacyShow(true, true);
AMapFlutterLocation.setApiKey("iOS的Key", "Android的key");
在需要的地方,检查权限,开始获取经纬度
StreamSubscription<Map<String, Object>> _locationListener;
AMapFlutterLocation _locationPlugin = new AMapFlutterLocation();
void initState() {
super.initState();
requestPermission();
///注册定位结果监听
_locationListener = _locationPlugin
.onLocationChanged()
.listen((Map<String, Object> result) {
print('定位结果${result}');
}
/// 动态申请定位权限
void requestPermission() async {
// 申请权限
bool hasLocationPermission = await requestLocationPermission();
if (hasLocationPermission) {
if (null != _locationPlugin) {
print("定位权限申请通过,开始定位");
_locationPlugin.startLocation();
}
} else {
print("定位权限申请不通过");
}
}
/// 申请定位权限
/// 授予定位权限返回true, 否则返回false
Future<bool> requestLocationPermission() async {
//获取当前的权限
var status = await Permission.location.status;
if (status == PermissionStatus.granted) {
//已经授权
return true;
} else {
//未授权则发起一次申请
status = await Permission.location.request();
if (status == PermissionStatus.granted) {
return true;
} else {
return false;
}
}
}
吐槽一下,官方文档写的不是很清晰,有点小坑,细心点,大概就这些
注意iOS和安卓的权限不要忘记加