admin
2021-12-04 5b1540fa5c18bc8b2739f4ab06d2a7b7953c65bf
lib/utils/permission_util.dart
@@ -1,5 +1,7 @@
import 'dart:convert';
import 'dart:io';
import 'package:locations/utils/global.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -7,6 +9,19 @@
class PermissionUtil {
  static var deniedSets = Set();
  static Permission getLocationPermission() {
    if (Platform.isAndroid) {
      //获取系统版本
      if (Global.androidSDK != null && Global.androidSDK! < 29) {
        return Permission.locationAlways;
      } else {
        return Permission.location;
      }
    } else {
      return Permission.locationAlways;
    }
  }
  static Future _loadDeniedPermissions() async {
    //加载
@@ -16,7 +31,7 @@
    if (list != null) {
      deniedSets.addAll(list);
    }
    print(jsonEncode(list));
  }
@@ -64,11 +79,11 @@
    PermissionStatus status = await permission.status;
    PermissionStatus? resultStatus;
    switch (status) {
    //Android授权
      //Android授权
      case PermissionStatus.granted:
        resultStatus = status;
        break;
    //Android拒绝
      //Android拒绝
      case PermissionStatus.denied:
        if (deniedSets.contains(permission.value.toString()) && !force) {
          resultStatus = PermissionStatus.denied;
@@ -76,7 +91,7 @@
          resultStatus = await permission.request();
        }
        break;
    //Android禁止后不再提示
      //Android禁止后不再提示
      case PermissionStatus.permanentlyDenied:
        if (deniedSets.contains(permission.value.toString()) && !force) {
          resultStatus = PermissionStatus.permanentlyDenied;
@@ -85,7 +100,7 @@
          resultStatus = await permission.status;
        }
        break;
    //IOS
      //IOS
      case PermissionStatus.limited:
        if (deniedSets.contains(permission.value.toString()) && !force) {
          resultStatus = PermissionStatus.limited;
@@ -93,7 +108,7 @@
          resultStatus = await permission.request();
        }
        break;
    //IOS
      //IOS
      case PermissionStatus.restricted:
        if (deniedSets.contains(permission.value.toString()) && !force) {
          resultStatus = PermissionStatus.restricted;
@@ -103,7 +118,7 @@
        break;
    }
    if(permission==Permission.locationAlways){
    if (permission == PermissionUtil.getLocationPermission()) {
      eventBus.fire(UserLocationPermissionEventBus(resultStatus));
    }