DEV Community

Manoj Patadiya
Manoj Patadiya

Posted on • Edited on

🚀 A Modern Flutter Permission Plugin That Works Across ALL Platforms (Android, iOS, Web, Desktop)

Managing permissions in Flutter apps can quickly become complex — especially when supporting multiple platforms like Android, iOS, Web, and Desktop.

Handling platform differences, permission states, and new OS changes often results in messy and repetitive code.

So I built a modern federated Flutter plugin:

👉 permission_manager

A simple, unified API to check, request, and listen to permission states without dealing with platform-specific complexity.

👉 https://pub.dev/packages/permission_manager

📱 Why Another Permission Plugin?

While building real-world Flutter applications, I faced several common problems:

✅ Different permission behaviors across platforms
✅ Complex platform-specific implementations
✅ Managing multiple permissions at once
✅ Handling new Android permission models (Android 13 media permissions)
✅ Listening to permission state changes in real-time

I wanted something:
1) Clean
2) Modern architecture
3) Cross-platform ready
4) Easy to maintain

✨ Key Features

🔥 Federated architecture for future-proof multi-platform support
🔥 Single unified API for all permissions
🔥 Request multiple permissions at once
🔥 Real-time permission status stream
🔥 Android specialized permissions support:
1) Battery optimization
2) Overlay (draw over apps)
3) Exact alarms
🔥 Full iOS permission state handling (restricted, limited, etc.)
🔥 Android 13 granular media permission support
🔥 Swift Package Manager support (iOS/macOS)
🔥 Fully documented API

📱 Supported Platforms

✅ Android
✅ iOS
✅ Web
✅ macOS
✅ Windows
✅ Linux

âš¡ Quick Example
import 'package:permission_manager/permission_manager.dart';

final status = await PermissionManager.request(
PermissionManagerPermission.camera,
);

if (status == PermissionManagerStatus.granted) {
// Permission granted
}

🔥 Request Multiple Permissions
final statuses = await PermissionManager.requestMultiple([
PermissionManagerPermission.camera,
PermissionManagerPermission.location,
]);

👀 Listen to Permission Changes
PermissionManager.statusStream(
PermissionManagerPermission.camera
).listen((status) {
print(status);
});

Top comments (1)

Collapse
 
flutter_developer profile image
Manoj Patadiya

If you are currently using permission_handler or another plugin, what features do you feel are missing or complicated?

I’m continuously improving permission_manager based on developer feedback, so suggestions are highly welcome 🚀