|
|
|
@ -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<Permission> permissions; |
|
|
|
|
|
|
|
const PermissionGroup({ |
|
|
|
const PermissionGroupModel({ |
|
|
|
required this.titleKey, |
|
|
|
required this.icon, |
|
|
|
required this.permissions, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
class PermissionGroup { |
|
|
|
/// 获取蓝牙权限列表(根据平台和Android版本) |
|
|
|
static Future<List<Permission>> _getBluetoothPermissions() async { |
|
|
|
if (Platform.isAndroid) { |
|
|
|
@ -41,55 +43,55 @@ class PermissionGroup { |
|
|
|
} |
|
|
|
|
|
|
|
/// 获取平台特定的权限组列表(异步方法) |
|
|
|
static Future<List<PermissionGroup>> getPlatformGroups() async { |
|
|
|
static Future<List<PermissionGroupModel>> 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], |
|
|
|
|