| | |
| | | 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'; |
| | | |
| | |
| | | |
| | | 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 { |
| | | //加载 |
| | |
| | | if (list != null) { |
| | | deniedSets.addAll(list); |
| | | } |
| | | |
| | | |
| | | print(jsonEncode(list)); |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | resultStatus = await permission.request(); |
| | | } |
| | | break; |
| | | //Android禁止后不再提示 |
| | | //Android禁止后不再提示 |
| | | case PermissionStatus.permanentlyDenied: |
| | | if (deniedSets.contains(permission.value.toString()) && !force) { |
| | | resultStatus = PermissionStatus.permanentlyDenied; |
| | |
| | | resultStatus = await permission.status; |
| | | } |
| | | break; |
| | | //IOS |
| | | //IOS |
| | | case PermissionStatus.limited: |
| | | if (deniedSets.contains(permission.value.toString()) && !force) { |
| | | resultStatus = PermissionStatus.limited; |
| | |
| | | resultStatus = await permission.request(); |
| | | } |
| | | break; |
| | | //IOS |
| | | //IOS |
| | | case PermissionStatus.restricted: |
| | | if (deniedSets.contains(permission.value.toString()) && !force) { |
| | | resultStatus = PermissionStatus.restricted; |
| | |
| | | break; |
| | | } |
| | | |
| | | if(permission==Permission.locationAlways){ |
| | | if (permission == PermissionUtil.getLocationPermission()) { |
| | | eventBus.fire(UserLocationPermissionEventBus(resultStatus)); |
| | | } |
| | | |