Browse Source

Merge remote-tracking branch 'refs/remotes/github/new_dev' into new_dev

newdev_shunjiawei
lxm 1 year ago
parent
commit
93e699e4f0
  1. 8
      lib/core/utils/permission_util.dart
  2. 25
      lib/modules/permissions/controllers/permissions_controller.dart

8
lib/core/utils/permission_util.dart

@ -176,7 +176,9 @@ class PermissionUtil {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'permissionUtilNeed'.tr + permissionName + 'permissionUtilPermission'.tr, 'permissionUtilNeed'.tr +
permissionName +
'permissionUtilPermission'.tr,
style: const TextStyle( style: const TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 16, fontSize: 16,
@ -261,7 +263,9 @@ class PermissionUtil {
bool? userChoice = await Get.dialog( bool? userChoice = await Get.dialog(
AlertDialog( AlertDialog(
title: Text('permissionUtilNeed'.tr + permissionName + 'permissionUtilPermission'.tr), title: Text('permissionUtilNeed'.tr +
permissionName +
'permissionUtilPermission'.tr),
content: Text(permanentDenialText), content: Text(permanentDenialText),
actions: [ actions: [
TextButton( TextButton(

25
lib/modules/permissions/controllers/permissions_controller.dart

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

Loading…
Cancel
Save