import 'dart:io'; import 'package:permission_handler/permission_handler.dart'; import 'package:sino_med_cloud/core/constants/app_enum.dart'; class PermissionService { /// 对外统一入口 static Future request( PermissionType type, ) async { final permission = _mapPermission(type); final status = await permission.status; if (status.isGranted) { return PermissionResult.granted; } final result = await permission.request(); if (result.isGranted) { return PermissionResult.granted; } if (result.isPermanentlyDenied) { return PermissionResult.permanentlyDenied; } return PermissionResult.denied; } /// 跳转系统设置 static Future openSetting() async { await openAppSettings(); } /// 权限映射(平台差异处理) static Permission _mapPermission(PermissionType type) { switch (type) { case PermissionType.camera: return Permission.camera; case PermissionType.microphone: return Permission.microphone; case PermissionType.gallery: if (Platform.isAndroid) { return Permission.photos; } return Permission.photos; case PermissionType.bluetooth: if (Platform.isAndroid) { return Permission.bluetoothConnect; } return Permission.bluetooth; } } }