askNotificationPermission static method

Future<bool> askNotificationPermission()

Implementation

static Future<bool> askNotificationPermission() async {
  var permissions = <Permission>[];
  final notification = await Permission.notification.status; //NOTIFICATION
  if (!notification.isGranted ||
      (Platform.isAndroid &&
          await Permission.notification.shouldShowRequestRationale)) {
    permissions.add(Permission.notification);
  }
  LogMessage.d("notification", notification.isGranted);
  if (!notification.isGranted) {
    var shouldShowRequestRationale = (Platform.isAndroid &&
        (await Permission.notification.shouldShowRequestRationale));
    LogMessage.d("shouldShowRequestRationale notification",
        shouldShowRequestRationale);
    LogMessage.d(
        "SessionManagement.getBool(Constants.notificationPermissionAsked) notification",
        (SessionManagement.getBool(Constants.notificationPermissionAsked)));
    var alreadyAsked =
        (SessionManagement.getBool(Constants.notificationPermissionAsked));
    LogMessage.d("alreadyAsked notification", alreadyAsked);
    var dialogContent2 =
        getTranslated("notificationPermissionMessageContent");
    if (shouldShowRequestRationale) {
      LogMessage.d("shouldShowRequestRationale", shouldShowRequestRationale);
      return requestNotificationPermissions(
          icon: notificationAlertPermission,
          title: getTranslated("notificationPermissionTitle"),
          message: getTranslated("notificationPermissionMessageContent"),
          permissions: permissions,
          showFromRational: true);
    } else if (alreadyAsked) {
      LogMessage.d("alreadyAsked", alreadyAsked);
      var popupValue = await customPermissionDialog(
          icon: notificationAlertPermission,
          content: dialogContent2,
          dialogStyle: AppStyleConfig
              .dialogStyle); //getPermissionAlertMessage("audio_call"));
      if (popupValue) {
        openAppSettings();
        return false;
      } else {
        return false;
      }
    } else {
      if (permissions.isNotEmpty) {
        return requestNotificationPermissions(
            icon: notificationAlertPermission,
            title: getTranslated("notificationPermissionTitle"),
            message: getTranslated("notificationPermissionMessageContent"),
            permissions: permissions,
            showFromRational: true);
      } else {
        var popupValue = await customPermissionDialog(
            icon: notificationAlertPermission,
            content: dialogContent2,
            dialogStyle: AppStyleConfig
                .dialogStyle); //getPermissionAlertMessage("audio_call"));
        if (popupValue) {
          openAppSettings();
          return false;
        } else {
          return false;
        }
      }
    }
  } else {
    return true;
  }
}