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)
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 🚀