|
|
|
@ -1,4 +1,5 @@ |
|
|
|
import 'package:get/get.dart'; |
|
|
|
import 'package:get_storage/get_storage.dart'; |
|
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
import 'dart:io' show Platform; |
|
|
|
@ -16,9 +17,13 @@ class PermissionsController extends GetxController { |
|
|
|
// Android版本信息(用于权限组显示判断) |
|
|
|
final RxInt androidSdkVersion = 0.obs; |
|
|
|
|
|
|
|
final GetStorage _storage = GetStorage(); |
|
|
|
bool? _isCalendarFullAccess; |
|
|
|
|
|
|
|
@override |
|
|
|
void onInit() { |
|
|
|
super.onInit(); |
|
|
|
_isCalendarFullAccess = _storage.read('record_permission_calendar'); |
|
|
|
_initAndroidVersion(); |
|
|
|
checkAllPermissions(); |
|
|
|
} |
|
|
|
@ -68,7 +73,19 @@ class PermissionsController extends GetxController { |
|
|
|
|
|
|
|
for (final permission in permissions) { |
|
|
|
try { |
|
|
|
statuses[permission] = await permission.status; |
|
|
|
if (Platform.isIOS && |
|
|
|
permission == Permission.calendarFullAccess && |
|
|
|
_isCalendarFullAccess == true) { |
|
|
|
PermissionStatus calendarStatus = await permission.status; |
|
|
|
if (calendarStatus == PermissionStatus.denied) { |
|
|
|
statuses[permission] = PermissionStatus.granted; |
|
|
|
} else { |
|
|
|
statuses[permission] = await permission.status; |
|
|
|
_storage.write('record_permission_calendar', false); |
|
|
|
} |
|
|
|
} else { |
|
|
|
statuses[permission] = await permission.status; |
|
|
|
} |
|
|
|
print('Permission: $permission, Status: ${statuses[permission]}'); |
|
|
|
} catch (e) { |
|
|
|
// 某些权限在特定平台可能不支持,设置为拒绝状态 |
|
|
|
@ -171,6 +188,12 @@ class PermissionsController extends GetxController { |
|
|
|
|
|
|
|
if (hasPermission) { |
|
|
|
_showSuccessMessage(); |
|
|
|
if (Platform.isIOS && permission == Permission.calendarFullAccess) { |
|
|
|
if (_isCalendarFullAccess == null) { |
|
|
|
_storage.write('record_permission_calendar', true); |
|
|
|
_isCalendarFullAccess = true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 刷新权限状态 |
|
|
|
|