import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; import 'package:prosappco/constansts.dart' show API_BASE_URL; 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('$API_BASE_URL/notifications/send'), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode( { 'title': title, 'body': body, 'to': token, }, ), ); response; } catch (e) { rethrow; } } }