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 πŸš€