request static method
Future<bool>
request(
- BuildContext context, {
- required Permission permission,
- required String rationaleTitle,
- required String rationaleMessage,
- required String settingsMessage,
- String continueLabel = 'Continuar',
- String cancelLabel = 'Ahora no',
- IconData rationaleIcon = Icons.info_outline_rounded,
- String settingsTitle = 'Habilitá el permiso en Ajustes',
- String settingsActionLabel = 'Abrir ajustes',
Implementation
static Future<bool> request(
BuildContext context, {
required Permission permission,
required String rationaleTitle,
required String rationaleMessage,
required String settingsMessage,
String continueLabel = 'Continuar',
String cancelLabel = 'Ahora no',
IconData rationaleIcon = Icons.info_outline_rounded,
String settingsTitle = 'Habilitá el permiso en Ajustes',
String settingsActionLabel = 'Abrir ajustes',
}) async {
final status = await permission.status;
if (status.isGranted || status.isLimited) return true;
if (!context.mounted) return false;
if (status.isPermanentlyDenied) {
await GpModal.showAlert(
context: context,
title: settingsTitle,
message: settingsMessage,
buttonText: settingsActionLabel,
onPressed: openAppSettings,
icon: Icons.settings_outlined,
);
return false;
}
var proceed = false;
await GpModal.showConfirm(
context: context,
title: rationaleTitle,
message: rationaleMessage,
confirmText: continueLabel,
cancelText: cancelLabel,
icon: rationaleIcon,
onConfirm: () => proceed = true,
);
if (!proceed) return false;
final result = await permission.request();
return result.isGranted || result.isLimited;
}