From 6771fbd38234b5e5cb85ed816840edb8dfb2a564 Mon Sep 17 00:00:00 2001
From: tanlongsheng <252620078@qq.com>
Date: Tue, 19 Aug 2025 12:10:44 +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
---
ios/Runner/Info.plist | 2 +
lib/data/services/novice_guide_service.dart | 8 ++--
.../permissions/models/permission_group.dart | 26 +++++------
.../permissions/views/permissions_view.dart | 43 ++++++++++---------
local_plugins/jl_opus/pubspec.yaml | 2 +-
pubspec.yaml | 7 +--
6 files changed, 44 insertions(+), 44 deletions(-)
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index f840f7ef3..4fc81d382 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -106,6 +106,8 @@
Bluetooth permission is required to connect and manage audio devices
NSCalendarsUsageDescription
Calendar permission is required to schedule and manage your audio meetings and recording tasks
+ NSCalendarsFullAccessUsageDescription
+ Calendar permission is required to schedule and manage your audio meetings and recording tasks
NSCameraUsageDescription
Camera permission is required for QR code scanning and video calling functions
NSLocationAlwaysAndWhenInUseUsageDescription
diff --git a/lib/data/services/novice_guide_service.dart b/lib/data/services/novice_guide_service.dart
index be154d551..fb124a77a 100644
--- a/lib/data/services/novice_guide_service.dart
+++ b/lib/data/services/novice_guide_service.dart
@@ -68,11 +68,11 @@ class NoviceGuideService extends GetxService {
'method': () async {
//创建会议提醒需要日历权限
await PermissionUtil.instance.requestPermission(
- permissionType: Permission.calendarWriteOnly,
- permissionName: 'calendarWrite'.tr, // 日历写入
- explanationText: 'calendarWritePermissionDesc'.tr, // 用于创建日历事件和提醒
+ permissionType: Permission.calendarFullAccess,
+ permissionName: 'calendarFullAccess'.tr, // 日历写入
+ explanationText: 'calendarFullAccessPermissionDesc'.tr, // 用于创建日历事件和提醒
permanentDenialText:
- 'calendarWritePermissionDetailDesc'.tr, // 创建日历事件需要日历写入权限
+ 'calendarFullAccessPermissionDetailDesc'.tr, // 创建日历事件需要日历写入权限
);
},
},
diff --git a/lib/modules/permissions/models/permission_group.dart b/lib/modules/permissions/models/permission_group.dart
index 5426a7336..c3c2ca4f6 100644
--- a/lib/modules/permissions/models/permission_group.dart
+++ b/lib/modules/permissions/models/permission_group.dart
@@ -3,17 +3,19 @@ import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:device_info_plus/device_info_plus.dart';
-class PermissionGroup {
+class PermissionGroupModel {
final String titleKey;
final IconData icon;
final List permissions;
- const PermissionGroup({
+ const PermissionGroupModel({
required this.titleKey,
required this.icon,
required this.permissions,
});
+}
+class PermissionGroup {
/// 获取蓝牙权限列表(根据平台和Android版本)
static Future> _getBluetoothPermissions() async {
if (Platform.isAndroid) {
@@ -41,55 +43,55 @@ class PermissionGroup {
}
/// 获取平台特定的权限组列表(异步方法)
- static Future> getPlatformGroups() async {
+ static Future> getPlatformGroups() async {
// 动态获取蓝牙权限列表
final bluetoothPermissions = await _getBluetoothPermissions();
-
+
return [
// 通讯权限组 - 仅Android(包含联系人权限)
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'communicationPermissions',
icon: Icons.phone_android,
permissions: [Permission.phone, Permission.sms, Permission.contacts],
),
// 蓝牙权限组 - 根据平台动态获取权限
- PermissionGroup(
+ PermissionGroupModel(
titleKey: 'bluetoothPermissions',
icon: Icons.bluetooth,
permissions: bluetoothPermissions,
),
// 通知权限组
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'notificationPermissions',
icon: Icons.notifications,
permissions: [Permission.notification],
),
// 闹钟权限组 - 仅Android
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'alarmPermissions',
icon: Icons.alarm,
permissions: [Permission.scheduleExactAlarm],
),
// 日历权限组
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'calendarPermissions',
icon: Icons.calendar_today,
permissions: [Permission.calendarFullAccess],
),
// 位置权限组
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'locationPermissions',
icon: Icons.location_on,
permissions: [Permission.location],
),
// 存储权限组
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'storagePermissions',
icon: Icons.storage,
permissions: [Permission.storage],
),
// 麦克风权限组
- const PermissionGroup(
+ const PermissionGroupModel(
titleKey: 'microphonePermissions',
icon: Icons.mic,
permissions: [Permission.microphone],
diff --git a/lib/modules/permissions/views/permissions_view.dart b/lib/modules/permissions/views/permissions_view.dart
index 94d188ff2..abfed7de3 100644
--- a/lib/modules/permissions/views/permissions_view.dart
+++ b/lib/modules/permissions/views/permissions_view.dart
@@ -4,7 +4,6 @@ import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'dart:ui';
import 'dart:io' show Platform;
-import 'package:device_info_plus/device_info_plus.dart';
import '../controllers/permissions_controller.dart';
import '../models/permission_group.dart';
@@ -56,23 +55,23 @@ class PermissionsView extends GetView {
}
Widget _buildPermissionGroups(bool isDarkMode) {
- return FutureBuilder>(
+ return FutureBuilder>(
future: PermissionGroup.getPlatformGroups(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
}
-
+
if (snapshot.hasError) {
return Center(child: Text('加载权限组失败: ${snapshot.error}'));
}
-
+
final groups = snapshot.data ?? [];
final List widgets = [];
for (int i = 0; i < groups.length; i++) {
final group = groups[i];
-
+
// 过滤平台特定权限
if (_shouldShowGroup(group)) {
widgets.add(_buildPermissionSection(
@@ -82,21 +81,21 @@ class PermissionsView extends GetView {
controller.permissionStatuses,
isDarkMode,
));
-
+
if (i < groups.length - 1) {
widgets.add(SizedBox(height: 20.h));
}
}
}
-
+
return Column(children: widgets);
- },
- );
+ },
+ );
}
- bool _shouldShowGroup(PermissionGroup group) {
+ bool _shouldShowGroup(PermissionGroupModel group) {
// Android特定权限组
- if (group.titleKey == 'communicationPermissions' ||
+ if (group.titleKey == 'communicationPermissions' ||
group.titleKey == 'alarmPermissions') {
return Platform.isAndroid;
}
@@ -162,7 +161,8 @@ class PermissionsView extends GetView {
? ImageFilter.blur(sigmaX: 5, sigmaY: 5)
: ImageFilter.blur(sigmaX: 0, sigmaY: 0),
child: Column(
- children: _buildPermissionItems(permissions, statuses, isDarkMode),
+ children:
+ _buildPermissionItems(permissions, statuses, isDarkMode),
),
),
),
@@ -238,12 +238,13 @@ class PermissionsView extends GetView {
),
),
Obx(() => Switch(
- value: status.isGranted,
- onChanged: controller.isRequestingPermission.value
- ? null
- : (value) => _handlePermissionToggle(permission, status, value),
- activeColor: Colors.blue[600],
- )),
+ value: status.isGranted,
+ onChanged: controller.isRequestingPermission.value
+ ? null
+ : (value) =>
+ _handlePermissionToggle(permission, status, value),
+ activeColor: Colors.blue[600],
+ )),
],
),
);
@@ -281,8 +282,8 @@ class PermissionsView extends GetView {
}
void _handlePermissionToggle(
- Permission permission,
- PermissionStatus status,
+ Permission permission,
+ PermissionStatus status,
bool value,
) {
if (value) {
@@ -293,4 +294,4 @@ class PermissionsView extends GetView {
controller.openSettings();
}
}
-}
\ No newline at end of file
+}
diff --git a/local_plugins/jl_opus/pubspec.yaml b/local_plugins/jl_opus/pubspec.yaml
index 3d553c10c..b28aaeb0d 100644
--- a/local_plugins/jl_opus/pubspec.yaml
+++ b/local_plugins/jl_opus/pubspec.yaml
@@ -11,7 +11,7 @@ dependencies:
flutter:
sdk: flutter
path_provider: ^2.0.0
- permission_handler: ^11.4.0
+ permission_handler: ^12.0.1
dev_dependencies:
flutter_test:
diff --git a/pubspec.yaml b/pubspec.yaml
index 04aa9127f..f60b70b0a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -28,7 +28,7 @@ dependencies:
htmltopdfwidgets: ^1.1.0
wifi_iot: ^0.3.19+2
flutter_intro: ^3.4.0
- permission_handler: ^10.4.5
+ permission_handler: ^12.0.1
web_socket_channel: ^2.4.0
flutter_dotenv: ^5.1.0
synchronized: ^3.1.0
@@ -119,11 +119,6 @@ dev_dependencies:
build_runner: ^2.3.3 # 用于生成代码 flutter pub run build_runner build
json_serializable: ^6.6.0 # 用于自动生成代码
-dependency_overrides:
- permission_handler: ^12.0.0
- permission_handler_android: ^13.0.0
- permission_handler_apple: ^9.4.0
-
flutter:
uses-material-design: true
shaders: