From b4e3b4c28792c5dda0e43baa5bd70a3e369e1c98 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Wed, 20 Aug 2025 02:18:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=8E=86=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/utils/permission_util.dart | 8 ++++-- .../controllers/permissions_controller.dart | 25 ++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) 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; + } + } } // 刷新权限状态