showDialog method
Displays the permanently denied dialog guiding the user to open app settings.
Implementation
Future<dynamic> showDialog({BuildContext? context}) {
final ctx = context ?? coreKitInstance.navigatorKey.currentState?.context;
if (ctx == null) {
CkLogger.warning(
'Cannot show permission dialog: no BuildContext available.',
tag: 'Permission Handler',
);
return Future.value(null);
}
final errorColor = coreKitInstance.permissionHandlerColors.errorColor;
final actionColor = coreKitInstance.permissionHandlerColors.actionColor;
final normalColor = coreKitInstance.permissionHandlerColors.normalColor;
final fontFamily = coreKitInstance.fontFamily;
return material.showDialog(
context: ctx,
builder: (dialogCtx) => AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
title: Row(
children: [
Icon(Icons.warning_amber_rounded, color: errorColor),
const SizedBox(width: 8),
Text(
coreKitInstance.permissionHelperConfig.permissionDenied,
style: TextStyle(
fontFamily: fontFamily,
fontWeight: FontWeight.bold,
color: errorColor,
fontSize: 18,
),
),
],
),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize: 15,
color: Colors.black87,
fontFamily: fontFamily,
),
children: [
TextSpan(
text:
'❌ $name ${coreKitInstance.permissionHelperConfig.permissionIsPermanentlyDenied}\n\n',
style: TextStyle(
fontFamily: fontFamily,
color: errorColor,
fontWeight: FontWeight.w600,
),
),
TextSpan(
text:
'✅ ${coreKitInstance.permissionHelperConfig.toFixThisPleaseGoTo} ',
style: TextStyle(
fontFamily: fontFamily,
color: normalColor,
),
),
TextSpan(
text: coreKitInstance.permissionHelperConfig.openSettings,
style: TextStyle(
fontFamily: fontFamily,
color: actionColor,
decoration: TextDecoration.underline,
fontWeight: FontWeight.bold,
),
),
TextSpan(
text:
' ${coreKitInstance.permissionHelperConfig.andAllowThePermissionManually}',
style: TextStyle(
fontFamily: fontFamily,
color: normalColor,
),
),
],
),
),
],
),
actions: [
TextButton.icon(
onPressed: () {
openAppSettings();
if (coreKitInstance.appbarConfig.getBack != null) {
coreKitInstance.appbarConfig.getBack?.call();
} else {
Navigator.of(dialogCtx).pop();
}
},
icon: Icon(Icons.settings, color: actionColor),
label: Text(
coreKitInstance.permissionHelperConfig.openSettings,
style: TextStyle(
fontFamily: fontFamily,
color: actionColor,
fontWeight: FontWeight.w600,
),
),
),
TextButton(
onPressed: () {
if (coreKitInstance.appbarConfig.getBack != null) {
coreKitInstance.appbarConfig.getBack?.call();
} else {
Navigator.of(dialogCtx).pop();
}
},
child: Text(
coreKitInstance.permissionHelperConfig.cancel,
style: TextStyle(fontFamily: fontFamily, color: Colors.grey[700]),
),
),
],
),
);
}