import 'dart:async'; import 'package:flutter/services.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; /// Requesting permissions on Android13 or higher final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); /// Streams are created so that app can respond to notification-related events /// since the plugin is initialised in the `main` function final StreamController didReceiveLocalNotificationStream = StreamController.broadcast(); final StreamController selectNotificationStream = StreamController.broadcast(); const MethodChannel platform = MethodChannel('dexterx.dev/flutter_local_notifications_example'); const String portName = 'notification_send_port'; class ReceivedNotification { final int id; final String? title; final String? body; final String? payload; const ReceivedNotification({ required this.id, required this.title, required this.body, required this.payload, }); } String? selectedNotificationPayload; /// A notification action which triggers a url launch event const String urlLanunchActionId = 'id_1'; /// A notification action which triggers a App navigation event const String navigationActionId = 'id-3'; /// Defines a iOS/MacOS notification category for text input actions. const String darwinNotificationCategoryText = 'textCategory'; /// Defines a iOS/MacOS notification category for text input actions. const String darwinNotificationCategoryPlain = 'plainCategory'; @pragma('vm:entry-point') void notificationTapBackground(NotificationResponse notificationResponse) { print('notification(${notificationResponse.id}) action tapped: ' '${notificationResponse.actionId} with' ' payload: ${notificationResponse.payload}'); if (notificationResponse.input?.isNotEmpty ?? false) { print('notification action tapped with input: ${notificationResponse.input}'); } }