123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- import 'dart:async';
-
- import 'package:amap_flutter_location/amap_flutter_location.dart';
- import 'package:amap_flutter_location/amap_location_option.dart';
- import 'package:permission_handler/permission_handler.dart';
-
- import 'amap/const_config.dart';
-
- typedef AMAPListener = void Function(Map<String, Object>);
-
- void showPrivacy() {
-
-
-
-
-
-
-
-
-
-
- AMapFlutterLocation.updatePrivacyShow(true, true);
-
-
-
-
-
-
-
-
- AMapFlutterLocation.updatePrivacyAgree(true);
- }
-
-
- Future _requirePermission() async {
- print(1);
-
- print(2);
-
- print(3);
-
- PermissionStatus _permissionGranted = await Permission.location.status;
- if (_permissionGranted == PermissionStatus.denied) {
-
- _permissionGranted = await Permission.location.request();
- if (_permissionGranted != PermissionStatus.granted) {
- throw Exception("请设置允许当前程序定位功能");
- }
-
-
-
- }
- }
-
- Future requireLocation(AMAPListener listener) async {
- AMapFlutterLocation.setApiKey(
- ConstConfig.amapApiKeys.androidKey!, ConstConfig.amapApiKeys.iosKey!);
- showPrivacy();
-
- await checkPermission();
- final AMapFlutterLocation location = AMapFlutterLocation();
- location.onLocationChanged().listen(listener);
- location.setLocationOption(_getAMapLocationOption());
- location.startLocation();
-
- return location;
- }
-
- _getAMapLocationOption() {
- AMapLocationOption locationOption = new AMapLocationOption();
-
-
- locationOption.onceLocation = false;
-
-
- locationOption.needAddress = true;
-
-
- locationOption.geoLanguage = GeoLanguage.DEFAULT;
-
- locationOption.desiredLocationAccuracyAuthorizationMode =
- AMapLocationAccuracyAuthorizationMode.ReduceAccuracy;
-
- locationOption.fullAccuracyPurposeKey = "AMapLocationScene";
-
-
- locationOption.locationInterval = 2000;
-
-
-
-
-
-
- locationOption.locationMode = AMapLocationMode.Hight_Accuracy;
-
-
- locationOption.distanceFilter = -1;
-
-
-
-
-
-
-
-
- locationOption.desiredAccuracy = DesiredAccuracy.Best;
-
-
- locationOption.pausesLocationUpdatesAutomatically = false;
-
- return locationOption;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Future checkPermission() async {
- Permission permission = Permission.locationAlways;
- PermissionStatus status = await permission.status;
- print('检测权限 $status');
- if (status.isGranted) {
-
- } else if (status.isDenied) {
-
- requestPermission(permission);
- } else if (status.isPermanentlyDenied) {
-
- openAppSettings();
- } else if (status.isRestricted) {
-
- openAppSettings();
- } else {
-
- requestPermission(permission);
- }
- }
-
-
- Future requestPermission(Permission permission) async {
- PermissionStatus status = await permission.request();
- print('权限状态 $status');
- if (!status.isGranted) {
- openAppSettings();
- }
- }
|