handlePermissionRequest static method
Future<bool>
handlePermissionRequest(
- BuildContext context,
- Permission permission, {
- String title = 'Permission Required',
- String rationaleMessage = 'This app needs permission to function properly.',
- String deniedMessage = 'Permission was denied. Please enable it in settings.',
- String permanentlyDeniedMessage = 'Permission is permanently denied. Please enable it in settings.',
- bool showRationale = true,
Handle permission request with comprehensive flow
Implementation
static Future<bool> handlePermissionRequest(
BuildContext context,
Permission permission, {
String title = 'Permission Required',
String rationaleMessage = 'This app needs permission to function properly.',
String deniedMessage =
'Permission was denied. Please enable it in settings.',
String permanentlyDeniedMessage =
'Permission is permanently denied. Please enable it in settings.',
bool showRationale = true,
}) async {
// Check if already granted
if (await isPermissionGranted(permission)) {
return true;
}
// Show rationale if enabled
if (showRationale) {
final granted = await requestPermissionWithRationale(
context,
permission,
title: title,
message: rationaleMessage,
);
if (granted) return true;
} else {
// Direct request without rationale
final granted = await permission.request().isGranted;
if (granted) return true;
}
// Handle denied or permanently denied
if (await isPermissionPermanentlyDenied(permission)) {
await showPermissionDeniedDialog(
context,
title: title,
message: permanentlyDeniedMessage,
);
} else if (await isPermissionDenied(permission)) {
await showPermissionDeniedDialog(
context,
title: title,
message: deniedMessage,
);
}
return false;
}