تُعد حزمة permission_handler
من الحزم الأساسية في تطوير تطبيقات Flutter، حيث تساعد المطورين على إدارة أذونات الوصول لمختلف مكونات الجهاز مثل الكاميرا، الميكروفون، والموقع. سنتعرف في هذا المقال على كيفية استخدام هذه الحزمة وكيفية تطبيقها في تطبيقات Flutter.
أهمية حزمة Permission Handler
حزمة permission_handler
تُمكنك من طلب والتحقق من أذونات الوصول على الأجهزة المحمولة بسهولة. تساعد هذه الحزمة على ضمان أن تطبيقك يملك الأذونات اللازمة للعمل بشكل صحيح قبل محاولة الوصول إلى أي مورد يتطلب إذن.
“اقرأ أيضاً: شرح استخدام LinearProgressIndicator في فلاتر“
تثبيت الحزمة Permission Handler
لتثبيت حزمة permission_handler
في مشروعك، عليك تعديل ملف pubspec.yaml
وإضافة السطر التالي ضمن dependencies:
dependencies: flutter: sdk: flutter permission_handler: ^11.3.1
بعد إضافة السطر، قم بتشغيل الأمر التالي في الـ terminal لتثبيت الحزمة:
flutter pub get
“اقرأ أيضاً: شرح حلقة التكرار While في لغة دارت (Dart)“
استخدام حزمة Permission Handler
إعدادات Android و iOS
قبل استخدام الحزمة، هناك بعض الإعدادات التي يجب تهيئتها لكل من Android و iOS.
إعدادات Android
قم بفتح ملف AndroidManifest.xml
وأضف الأذونات المطلوبة داخل الـ <manifest>
:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
إعدادات iOS
افتح ملف Info.plist
وأضف الأذونات المطلوبة كالتالي:
<key>NSCameraUsageDescription</key> <string>We need camera access to take pictures</string> <key>NSMicrophoneUsageDescription</key> <string>We need microphone access to record audio</string> <key>NSLocationWhenInUseUsageDescription</key> <string>We need your location to provide better services</string>
“اقرأ أيضاً: شرح Arrow Function في لغة دارت (Dart)“
طلب الأذونات
يمكنك استخدام الحزمة لطلب الأذونات باستخدام الكود التالي:
import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('Permission Handler Example')), body: Center( child: ElevatedButton( onPressed: () async { PermissionStatus status = await Permission.camera.request(); if (status.isGranted) { print('Camera permission granted'); } else if (status.isDenied) { print('Camera permission denied'); } else if (status.isPermanentlyDenied) { print('Camera permission permanently denied. Please enable it from settings.'); } }, child: Text('طلب إذن الكاميرا'), ), ), ), ); } }
التحقق من حالة الأذونات
يمكنك التحقق من حالة الأذونات باستخدام الكود التالي:
void checkPermissionStatus() async { var status = await Permission.camera.status; if (status.isGranted) { print('Camera permission granted'); } else if (status.isDenied) { print('Camera permission denied'); } else if (status.isPermanentlyDenied) { print('Camera permission permanently denied'); } }
طلب أذونات متعددة
يمكنك طلب أذونات متعددة في نفس الوقت كما يلي:
void requestMultiplePermissions() async { Map<Permission, PermissionStatus> statuses = await [ Permission.camera, Permission.microphone, Permission.location, ].request(); if (statuses[Permission.camera].isGranted) { print('Camera permission granted'); } if (statuses[Permission.microphone].isGranted) { print('Microphone permission granted'); } if (statuses[Permission.location].isGranted) { print('Location permission granted'); } }
فتح إعدادات التطبيق
في حال تم رفض الإذن بشكل دائم، يمكنك توجيه المستخدم إلى إعدادات التطبيق لتمكين الأذونات:
void openAppSettings() async { bool isOpened = await openAppSettings(); if (isOpened) { print('App settings opened'); } else { print('Failed to open app settings'); } }
“اقرأ أيضاً: شرح كلمة Late في لغة دارت (Late in Dart)“
تعد حزمة permission_handler
أداة قوية ومرنة لإدارة أذونات الوصول في تطبيقات Flutter. باستخدام هذه الحزمة، يمكنك ضمان أن تطبيقك يحصل على الأذونات اللازمة للعمل بشكل صحيح وتحسين تجربة المستخدم. تأكد من مراجعة وثائق الحزمة والتجربة مع الأذونات المختلفة لتلبية احتياجات تطبيقك بشكل كامل.