askNotificationPermission static method

Future<bool> askNotificationPermission(
  1. BuildContext buildContext
)

Implementation

static Future<bool> askNotificationPermission(
    BuildContext buildContext) 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 = Constants.notificationPermissionMessage;
    if (shouldShowRequestRationale) {
      LogMessage.d("shouldShowRequestRationale", shouldShowRequestRationale);
      if (!buildContext.mounted) return false;
      return requestNotificationPermissions(
          icon: notificationAlertPermission,
          title: Constants.notificationPermissionTitle,
          message: Constants.notificationPermissionMessage,
          permissions: permissions,
          showFromRational: true,
          buildContext: buildContext);
    } else if (alreadyAsked) {
      LogMessage.d("alreadyAsked", alreadyAsked);
      if (!buildContext.mounted) return false;
      var popupValue = await customPermissionDialog(
          icon: notificationAlertPermission,
          content: dialogContent2,
          context: buildContext,
          appName: AppConstants
              .appName); //getPermissionAlertMessage("audio_call"));
      if (popupValue) {
        openAppSettings();
        return false;
      } else {
        return false;
      }
    } else {
      if (permissions.isNotEmpty) {
        if (!buildContext.mounted) return false;
        return requestNotificationPermissions(
            icon: notificationAlertPermission,
            title: Constants.notificationPermissionTitle,
            message: Constants.notificationPermissionMessage,
            permissions: permissions,
            showFromRational: true,
            buildContext: buildContext);
      } else {
        if (!buildContext.mounted) return false;
        var popupValue = await customPermissionDialog(
            icon: notificationAlertPermission,
            content: dialogContent2,
            context: buildContext,
            appName: AppConstants
                .appName); //getPermissionAlertMessage("audio_call"));
        if (popupValue) {
          openAppSettings();
          return false;
        } else {
          return false;
        }
      }
    }
  } else {
    return true;
  }
}