El paquete flutter_local_notifications
es una herramienta poderosa para gestionar notificaciones locales en aplicaciones Flutter. Permite mostrar notificaciones en dispositivos Android e iOS con opciones personalizables, programadas y recurrentes.
flutter_local_notifications
y para qué sirve?
flutter_local_notifications
es un paquete que facilita la implementación de notificaciones locales, es decir, mensajes que se muestran en el dispositivo sin necesidad de interacción con un servidor. Es útil para recordatorios, alarmas o actualizaciones dentro de la aplicación.
En el archivo pubspec.yaml
de tu proyecto, añade:
dependencies:
flutter_local_notifications: ^15.0.0
Ejecuta el comando para instalarlo:
flutter pub get
Modifica el archivo AndroidManifest.xml
para declarar los permisos necesarios:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
En el archivo Info.plist
, añade:
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
</array>
<key>NSUserNotificationUsageDescription</key>
<string>Esta aplicación necesita enviar notificaciones.</string>
flutter_local_notifications
1. Importar el paquete:
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
2. Inicializar el plugin:
Configura una instancia de FlutterLocalNotificationsPlugin
y define su inicialización.
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
runApp(MyApp());
}
3. Mostrar una notificación simple:
Future<void> showNotification() async {
const AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
'channelId',
'channelName',
channelDescription: 'Descripción del canal',
importance: Importance.max,
priority: Priority.high,
);
const NotificationDetails notificationDetails = NotificationDetails(
android: androidDetails,
);
await flutterLocalNotificationsPlugin.show(
0, // ID único de la notificación
'Título de la notificación',
'Contenido de la notificación',
notificationDetails,
);
}
Método | Descripción |
---|---|
initialize()
|
Inicializa el plugin con configuraciones específicas. |
show()
|
Muestra una notificación inmediata. |
zonedSchedule()
|
Programa una notificación para mostrarse en un momento específico. |
cancel()
|
Cancela una notificación específica según su ID. |
cancelAll()
|
Cancela todas las notificaciones activas. |
resolvePlatformSpecificImplementation<T>()
|
Permite configuraciones específicas para Android o iOS. |
Puedes programar una notificación para que se muestre más tarde utilizando zonedSchedule
:
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:timezone/data/latest.dart' as tz;
import 'package:timezone/timezone.dart' as tz;
Future<void> scheduleNotification() async {
tz.initializeTimeZones();
await flutterLocalNotificationsPlugin.zonedSchedule(
1,
'Notificación programada',
'Esto es un recordatorio',
tz.TZDateTime.now(tz.local).add(const Duration(seconds: 5)),
const NotificationDetails(
android: AndroidNotificationDetails(
'scheduledChannelId',
'scheduledChannelName',
channelDescription: 'Canal para notificaciones programadas',
),
),
androidAllowWhileIdle: true,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
);
}
Para más opciones y configuraciones avanzadas, consulta la documentación oficial de flutter_local_notifications.
Jorge García
Fullstack developer