checkPermission static method

Future<bool> checkPermission(
  1. BuildContext context,
  2. Permission permission,
  3. String permissionIcon,
  4. String permissionContent,
)

Implementation

static Future<bool> checkPermission(BuildContext context,Permission permission, String permissionIcon, String permissionContent) async {
  var info = await PackageInfo.fromPlatform();
  var status = await permission.status;
  if (status == PermissionStatus.granted) {
    debugPrint("permission granted opening");
    return true;
  }else if(status == PermissionStatus.permanentlyDenied){
    mirrorFlyLog('permanentlyDenied', 'permission');
    var permissionAlertMessage = "";
    var permissionName = "$permission";
    permissionName = permissionName.replaceAll("Permission.", "");

    switch (permissionName.toLowerCase()){
      case "camera":
        permissionAlertMessage = AppConstants.cameraPermissionDenied;
        break;
      case "microphone":
        permissionAlertMessage = AppConstants.microPhonePermissionDenied;
        break;
      case "storage":
        permissionAlertMessage = AppConstants.storagePermissionDenied;
        break;
      case "contacts":
        permissionAlertMessage = AppConstants.contactPermissionDenied;
        break;
      case "location":
        permissionAlertMessage = AppConstants.locationPermissionDenied;
        break;
      default:
        permissionAlertMessage = "${info.appName} need the ${permissionName.toUpperCase()} Permission.${AppConstants.otherPermissionDenied} \"${permissionName.toUpperCase()}\"";
    }
    if(context.mounted) {
      var deniedPopupValue = await customPermissionDialog(context : context, icon: permissionIcon, content: permissionAlertMessage, appName: info.appName);
      if(deniedPopupValue){
        openAppSettings();
        return false;
      }else{
        return false;
      }
    }else {
      return false;
    }
    /*var deniedPopupValue = await customPermissionDialog(context,icon: permissionIcon,
        content: permissionAlertMessage,appName: info.appName);
    if(deniedPopupValue){
      openAppSettings();
      return false;
    }else{
      return false;
    }*/
  }else{
    // mirrorFlyLog('denied', 'permission');
    if(context.mounted) {
      var popupValue = await customPermissionDialog(context: context,icon: permissionIcon,
          content: permissionContent,appName: info.appName);
      if(popupValue){
        return AppPermission.requestPermission(permission);
      }else{
        return false;
      }
    }else{
      return false;
    }
    /*var popupValue = await customPermissionDialog(context,icon: permissionIcon,
        content: permissionContent,appName: info.appName);
    if(popupValue){
      return AppPermission.requestPermission(permission);
    }else{
      return false;
    }*/
  }
}