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.denied ||
      (Platform.isAndroid && await permission.shouldShowRequestRationale)) {
    mirrorFlyLog('denied', 'permission');
    if (!context.mounted) return false;
    var popupValue = await customPermissionDialog(
        icon: permissionIcon,
        content: permissionContent,
        context: context,
        appName: AppConstants.appName);
    if (popupValue) {
      var newp = await AppPermission.requestPermission(permission);
      return newp.isGranted;
    } else {
      return false;
    }
  } else if (status == PermissionStatus.denied) {
    mirrorFlyLog('denied', 'permission');
    if (!context.mounted) return false;
    var popupValue = await customPermissionDialog(
        icon: permissionIcon,
        content: permissionContent,
        context: context,
        appName: AppConstants.appName);
    if (popupValue) {
      // return AppPermission.requestPermission(permission);/*.then((value) {
      var newp = await AppPermission.requestPermission(permission);
      /*if(newp.isPermanentlyDenied) {
        // savePermissionAsked(permission);
        var deniedPopupValue = await customPermissionDialog(
            icon: permissionIcon,
            content: getPermissionAlertMessage(
                permission.toString().replaceAll("Permission.", "")));
        if (deniedPopupValue) {
          openAppSettings();
          return false;
        } else {
          return false;
        }
      }else{
        return newp.isGranted;
      }*/
      return newp.isGranted;
    } else {
      return false;
    }
  } else {
    if (!context.mounted) return false;
    var deniedPopupValue = await customPermissionDialog(
        icon: permissionIcon,
        content: getPermissionAlertMessage(
            permission.toString().replaceAll("Permission.", "")),
        context: context,
        appName: AppConstants.appName);
    if (deniedPopupValue) {
      openAppSettings();
      return false;
    } else {
      return false;
    }
  }
}