import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; class LocalNotifications { static Future requestPermissionLocalNotifications() async { final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); await flutterLocalNotificationsPlugin .resolvePlatformSpecificImplementation< AndroidFlutterLocalNotificationsPlugin>() ?.requestNotificationsPermission(); } static Future initializeLocalNotifications() async { final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); const initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); const DarwinInitializationSettings initializationSettingsIOS = DarwinInitializationSettings( requestAlertPermission: true, requestBadgePermission: true, requestSoundPermission: true, ); const initializationSettings = InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS, ); await flutterLocalNotificationsPlugin.initialize( initializationSettings, ); } static void showLocalNotification({ required int id, String? title, String? body, String? data, }) { const androidDetails = AndroidNotificationDetails( 'channel_id', 'channel_name', importance: Importance.max, priority: Priority.high, playSound: true, sound: RawResourceAndroidNotificationSound('notification'), ); // IOSNotificationDetails --> DarwinNotificationDetails const DarwinNotificationDetails iOSNotificationDetails = DarwinNotificationDetails( presentAlert: true, presentBadge: true, presentSound: true, ); const NotificationDetails notificationDetails = NotificationDetails( android: androidDetails, iOS: iOSNotificationDetails); final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); flutterLocalNotificationsPlugin.show( id, title, body, notificationDetails, payload: data, ); } static Future sendPushNotification( String token, String title, String body) async { try { http.Response response = await http.post( Uri.parse('https://fcm.googleapis.com/fcm/send'), headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'key=AAAAORdR-xU:APA91bF_wblg86jHAC-uexrXPHavYRlk5wge1Gf46m56V4J2D2L37Cp_hf46JZUzpvsWPSpqc5ewHelKI9LTifUG_s2mciMI6e5VLKo7E1R8btbNo7iaM9do2ctoyHKUm1atlZBdKaN2', }, body: jsonEncode( { 'notification': { 'body': body, 'title': title, }, 'priority': 'high', 'data': { 'click_action': 'FLUTTER_NOTIFICATION_CLICK', 'id': '1', 'status': 'done', }, 'to': token, }, ), ); response; } catch (e) { rethrow; } } }