PermissionMaster class

A class to manage and request permissions in a Flutter application.

This class provides methods to request various permissions on both Android and iOS platforms. Permissions are requested in normal state (not granted by default) and require user interaction.

Example usage:

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    PermissionMaster.setContext(context);
  }

  Future<void> _requestCameraPermission() async {
    final permissionMaster = PermissionMaster();

    // Check current permission status first
    final currentStatus = await permissionMaster.checkPermissionStatus(PermissionType.camera.value);

    if (currentStatus == PermissionStatus.granted) {
      print('Camera permission already granted');
      return;
    }

    // Request camera permission
    final status = await permissionMaster.requestCameraPermission();

    switch (status) {
      case PermissionStatus.granted:
        print('Camera permission granted - can now use camera');
        break;
      case PermissionStatus.denied:
        print('Camera permission denied by user');
        break;
      case PermissionStatus.openSettings:
        print('Camera permission permanently denied - opening settings');
        await permissionMaster.openAppSettings();
        break;
      default:
        print('Error requesting camera permission');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Permission Master Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: _requestCameraPermission,
            child: Text('Request Camera Permission'),
          ),
        ),
      ),
    );
  }
}

Constructors

PermissionMaster()

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
storage GetStorageBridge
Gets the storage bridge instance for custom data persistence
no setter

Methods

checkBluetoothPermissionMac() Future<String>
Checks Bluetooth permission status on macOS.
checkCalendarPermissionMac() Future<String>
Checks calendar permission status on macOS.
checkCameraPermissionMac() Future<String>
Checks camera permission status on macOS.
checkCameraPermissionWindows() Future<String>
Checks camera permission status on Windows. Example usage:
checkContactsPermissionMac() Future<String>
Checks contacts permission status on macOS.
checkEmailPermissionWindows() Future<String>
Checks email permission status on Windows.
checkLocationPermissionMac() Future<String>
Checks location permission status on macOS.
checkLocationPermissionWindows() Future<String>
Checks location permission status on Windows.
checkMicrophonePermissionMac() Future<String>
Checks microphone permission status on macOS.
checkMicrophonePermissionWindows() Future<String>
Checks microphone permission status on Windows. Example usage:
checkMultiplePermissions(List<PermissionType> permissions) Future<Map<String, PermissionStatus>>
Checks the status of multiple permissions. Example usage:
checkNotificationPermissionMac() Future<String>
Checks notification permission status on macOS.
checkNotificationPermissionWindows() Future<String>
Checks notification permission status on Windows.
checkPermissionStatus(String permission) Future<PermissionStatus>
Checks the status of a specific permission. Example usage:
checkPermissionStatusWindows(String permission) Future<String>
Checks permission status on Windows. Example usage:
checkPhotoLibraryPermissionMac() Future<String>
Checks photo library permission status on macOS.
checkRadiosPermissionWindows() Future<String>
Checks radios permission status on Windows.
checkRemindersPermissionMac() Future<String>
Checks reminders permission status on macOS.
checkSpeechRecognitionPermissionMac() Future<String>
Checks speech recognition permission status on macOS.
checkVoiceActivationPermissionWindows() Future<String>
Checks voice activation permission status on Windows.
denyRequestPermission({required PermissionType permission}) Future<void>
Explicitly denies a permission and stores the denial status, time, and count in local storage. This method is useful for tracking user behavior and avoiding repeated permission requests.
getPlatformVersion() Future<String?>
Retrieves the platform version. Example usage:
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
openAppSettings() Future<bool>
Opens the app settings to allow the user to manually enable permissions. Returns true if settings were opened successfully, false otherwise. Example usage:
openAppSettingsDirectly() Future<void>
Opens the app settings directly without showing any dialog. This is useful when you want to redirect the user to settings without additional prompts.
openAppSettingsLinux() Future<void>
Opens Linux app settings. Example usage:
openAppSettingsMac() Future<void>
Opens macOS app settings.
openAppSettingsWindows() Future<void>
Opens Windows app settings. Example usage:
openCameraSettings() Future<void>
Opens camera settings. Example usage:
openCameraSettingsWindows() Future<void>
Opens Windows camera settings. Example usage:
openLocationSettings() Future<void>
Opens location settings. Example usage:
openLocationSettingsWindows() Future<void>
Opens Windows location settings.
openMicrophoneSettings() Future<void>
Opens microphone settings. Example usage:
openMicrophoneSettingsWindows() Future<void>
Opens Windows microphone settings. Example usage:
openNotificationSettings() Future<void>
Opens notification settings. Example usage:
openNotificationSettingsWindows() Future<void>
Opens Windows notification settings.
openRadiosSettingsWindows() Future<void>
Opens Windows radios settings.
openSpeechSettingsWindows() Future<void>
Opens Windows speech settings.
requestActivityRecognitionPermission() Future<PermissionStatus>
Requests activity recognition permission. Example usage:
requestAlarmPermission() Future<PermissionStatus>
Requests alarm permission. Example usage:
requestBluetoothPermission() Future<PermissionStatus>
Requests Bluetooth permission. Example usage:
requestBluetoothPermissionLinux() Future<String>
Requests Bluetooth permission on Linux.
requestBluetoothPermissionMac() Future<String>
Requests Bluetooth permission on macOS.
requestCalendarPermission() Future<PermissionStatus>
Requests calendar permission. Example usage:
requestCalendarPermissionLinux() Future<String>
Requests calendar permission on Linux.
requestCalendarPermissionMac() Future<String>
Requests calendar permission on macOS.
requestCameraPermission() Future<PermissionStatus>
Requests camera permission. Example usage:
requestCameraPermissionLinux() Future<String>
Requests camera permission on Linux. Example usage:
requestCameraPermissionMac() Future<String>
Requests camera permission on macOS.
requestCameraPermissionWeb() Future<PermissionStatus>
Requests camera permission for web platform. Example usage:
requestCameraPermissionWindows() Future<String>
Requests camera permission on Windows. Example usage:
requestContactsPermission() Future<PermissionStatus>
Requests contacts permission. Example usage:
requestContactsPermissionLinux() Future<String>
Requests contacts permission on Linux.
requestContactsPermissionMac() Future<String>
Requests contacts permission on macOS.
requestEmailPermissionWindows() Future<String>
Requests email permission on Windows.
requestHealthPermission() Future<PermissionStatus>
Requests health permission. Example usage:
requestLocationPermission() Future<PermissionStatus>
Requests location permission. Example usage:
requestLocationPermissionLinux() Future<String>
Requests location permission on Linux.
requestLocationPermissionMac() Future<String>
Requests location permission on macOS.
requestLocationPermissionWeb() Future<PermissionStatus>
Requests location permission for web platform. Example usage:
requestLocationPermissionWindows() Future<String>
Requests location permission on Windows.
requestMicrophonePermission() Future<PermissionStatus>
Requests microphone permission. Example usage:
requestMicrophonePermissionLinux() Future<String>
Requests microphone permission on Linux. Example usage:
requestMicrophonePermissionMac() Future<String>
Requests microphone permission on macOS.
requestMicrophonePermissionWeb() Future<PermissionStatus>
Requests microphone permission for web platform. Example usage:
requestMicrophonePermissionWindows() Future<String>
Requests microphone permission on Windows. Example usage:
requestMotionPermission() Future<PermissionStatus>
Requests motion & fitness permission (iOS specific)
requestMusicPermission() Future<PermissionStatus>
Requests music/media library permission (iOS specific)
requestNearbyDevicesPermission() Future<PermissionStatus>
Requests nearby devices permission. Example usage:
requestNetworkPermissionLinux() Future<String>
Requests network permission on Linux.
requestNotificationPermission() Future<PermissionStatus>
Requests notification permission. Example usage:
requestNotificationPermissionLinux() Future<String>
Requests notification permission on Linux.
requestNotificationPermissionMac() Future<String>
Requests notification permission on macOS.
requestNotificationPermissionWeb() Future<PermissionStatus>
Requests notification permission for web platform. Example usage:
requestNotificationPermissionWindows() Future<String>
Requests notification permission on Windows.
requestPermission({required PermissionType permission}) Future<PermissionStatus>
Requests a specific permission based on the provided PermissionType. Example usage:
requestPermissionWithDialog({required PermissionType permission, String? title, String? message}) Future<PermissionStatus>
Requests a specific permission with a custom dialog. This method shows a dialog to the user before requesting the permission.
requestPhonePermission() Future<PermissionStatus>
Requests phone permission. Example usage:
requestPhotoLibraryPermissionMac() Future<String>
Requests photo library permission on macOS.
requestPhotosPermission() Future<PermissionStatus>
Requests photos/storage permission (iOS specific naming) Alias for requestStoragePermission
requestRadiosPermissionWindows() Future<String>
Requests radios permission on Windows.
requestRemindersPermission() Future<PermissionStatus>
Requests reminders permission (iOS specific)
requestRemindersPermissionMac() Future<String>
Requests reminders permission on macOS.
requestSensorsPermission() Future<PermissionStatus>
Requests body sensors permission. Example usage:
requestSmsPermission() Future<PermissionStatus>
Requests SMS permission. Example usage:
requestSpeechPermission() Future<PermissionStatus>
Requests speech recognition permission (iOS specific)
requestSpeechRecognitionPermissionMac() Future<String>
Requests speech recognition permission on macOS.
requestStoragePermission() Future<PermissionStatus>
Requests storage permission. Example usage:
requestStoragePermissionLinux() Future<String>
Requests storage permission on Linux.
requestUsbPermissionLinux() Future<String>
Requests USB permission on Linux.
requestVoiceActivationPermissionWindows() Future<String>
Requests voice activation permission on Windows.
requestWifiPermission() Future<PermissionStatus>
Requests Wi-Fi permission. Example usage:
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

setContext(BuildContext context) → void
Sets the context for the permission master.