diff --git a/lib/core/utils/permission_util.dart b/lib/core/utils/permission_util.dart index 2a88c5cd9..1f19ff396 100644 --- a/lib/core/utils/permission_util.dart +++ b/lib/core/utils/permission_util.dart @@ -176,7 +176,9 @@ class PermissionUtil { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'permissionUtilNeed'.tr + permissionName + 'permissionUtilPermission'.tr, + 'permissionUtilNeed'.tr + + permissionName + + 'permissionUtilPermission'.tr, style: const TextStyle( fontWeight: FontWeight.bold, fontSize: 16, @@ -261,7 +263,9 @@ class PermissionUtil { bool? userChoice = await Get.dialog( AlertDialog( - title: Text('permissionUtilNeed'.tr + permissionName + 'permissionUtilPermission'.tr), + title: Text('permissionUtilNeed'.tr + + permissionName + + 'permissionUtilPermission'.tr), content: Text(permanentDenialText), actions: [ TextButton( diff --git a/lib/modules/permissions/controllers/permissions_controller.dart b/lib/modules/permissions/controllers/permissions_controller.dart index 1c40d55a2..73ac1b605 100644 --- a/lib/modules/permissions/controllers/permissions_controller.dart +++ b/lib/modules/permissions/controllers/permissions_controller.dart @@ -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; + } + } } // 刷新权限状态