flutter_macos_permissions 2.0.2 copy "flutter_macos_permissions: ^2.0.2" to clipboard
flutter_macos_permissions: ^2.0.2 copied to clipboard

A Flutter plugin for requesting camera, microphone, and notification permissions on macOS.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_macos_permissions/flutter_macos_permissions.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: PermissionExample());
  }
}

class PermissionExample extends StatefulWidget {
  const PermissionExample({super.key});

  @override
  State<PermissionExample> createState() => _PermissionExampleState();
}

class _PermissionExampleState extends State<PermissionExample> {
  String _status = "Idle";

  /// Request permission
  void _request(String type) async {
    bool granted = false;
    try {
      switch (type) {
        case 'camera':
          granted = await FlutterMacosPermissions.requestCamera();
          break;
        case 'microphone':
          granted = await FlutterMacosPermissions.requestMicrophone();
          break;
        case 'notification':
          granted = await FlutterMacosPermissions.requestNotification();
          print('requested notification permission: $granted');
          break;
      }
      setState(() {
        _status = 'Requested $type → ${granted ? "Granted" : "Denied"}';
      });
    } catch (e) {
      setState(() {
        _status = 'Error while requesting $type: $e';
      });
    }
  }

  void _requestNotification(String) async {
    try {
      bool granted = await FlutterMacosPermissions.requestNotification();
      setState(() {
        _status = 'Notification permission → ${granted ? "Granted" : "Denied"}';
      });
    } on PlatformException catch (e) {
      setState(() {
        _status = 'Error requesting notification: ${e.message ?? "unknown"}';
      });
    }
  }

  /// Check status (without requesting)
  void _checkStatus(String type) async {
    String status = 'Unknown';
    try {
      switch (type) {
        case 'cameraStatus':
          status = await FlutterMacosPermissions.cameraStatus();
          break;
        case 'microphoneStatus':
          status = await FlutterMacosPermissions.microphoneStatus();
          print('microphone status: $status');
          break;
        case 'notificationStatus':
          status = await FlutterMacosPermissions.notificationStatus();
          print('checking notification status $status');
          break;
      }
      setState(() {
        _status = 'Status $type → $status ';
      });
    } catch (e) {
      setState(() => _status = 'Error while checking $type: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('macOS Permission Example')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_status, style: const TextStyle(fontSize: 16)),
            const SizedBox(height: 30),

            /// CAMERA
            ElevatedButton(
              onPressed: () => _request('camera'),
              child: const Text('Request Camera'),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => _checkStatus('cameraStatus'),
              child: const Text('Check Camera Status'),
            ),
            const SizedBox(height: 20),

            /// MICROPHONE
            ElevatedButton(
              onPressed: () => _request('microphone'),
              child: const Text('Request Microphone'),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => _checkStatus('microphoneStatus'),
              child: const Text('Check Microphone Status'),
            ),
            const SizedBox(height: 20),

            /// NOTIFICATION
            ElevatedButton(
              onPressed: () => _requestNotification('notification'),
              child: const Text('Request Notification'),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => _checkStatus('notificationStatus'),
              child: const Text('Check Notification Status'),
            ),
          ],
        ),
      ),
    );
  }
}
4
likes
0
points
96
downloads

Publisher

verified publisherdashstack.tech

Weekly Downloads

A Flutter plugin for requesting camera, microphone, and notification permissions on macOS.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_macos_permissions

Packages that implement flutter_macos_permissions