showNotification static method

Future<void> showNotification({
  1. required BuildContext context,
  2. required int id,
  3. required String titleKey,
  4. required String bodyKey,
})

Método para mostrar una notificación simple.

Este método crea y muestra una notificación local con un título y un cuerpo. Primero verifica si los permisos de notificación están activos, y si no lo están, solicita al usuario que los conceda. Si no se conceden, se muestra un mensaje de error.

Parámetros:

  • context: El contexto de la aplicación para internacionalizar el texto de la notificación.
  • id: El ID único de la notificación.
  • titleKey: La clave para obtener el título de la notificación.
  • bodyKey: La clave para obtener el cuerpo de la notificación.

Si los permisos son concedidos, se muestra la notificación en la pantalla.

Implementation

static Future<void> showNotification({
  required BuildContext context,
  required int id,
  required String titleKey,
  required String bodyKey,
}) async {
  // INTERNACIONALIZAMOS LA ALERTA
  final title = Internationalization.internationalization
      .getLocalizations(context, titleKey);
  final body = Internationalization.internationalization
      .getLocalizations(context, bodyKey);

  // PRIMERO COMPROBAMOS PERMISOS
  bool hasPermission = await checkNotificationPermissions();

  if (!hasPermission) {
    hasPermission = await requestNotificationPermissions();
    if (!hasPermission) {
      // MOSTRAR UN ERROR SI NO TIENE PERMISOS
      AlertUtil.showSnackBarError(context, "notification_permissions_denied");
      return;
    }
  }

  // DETALLES DE LA NOTIFICACION
  const AndroidNotificationDetails androidDetails =
      AndroidNotificationDetails(
    'your_channel_id',
    'your_channel_name',
    channelDescription: 'your_channel_description',
    importance: Importance.max,
    priority: Priority.high,
    showWhen: true,
  );

  const NotificationDetails platformDetails = NotificationDetails(
    android: androidDetails,
    iOS: DarwinNotificationDetails(),
  );

  // MOSTRAMOS LA NOTIFICACION
  await flutterLocalNotificationsPlugin.show(
    id,
    title,
    body,
    platformDetails,
  );
}