ComprehensiveNotificationManager class

Comprehensive notification manager that provides a unified interface for all notification operations across Firebase and local notifications.

This class uses a singleton pattern to prevent multiple instances from causing duplicate notifications.

Properties

fcmToken String?
Gets the current Firebase FCM token. Returns null if Firebase is not available or token is not ready.
no setter
foregroundManager ForegroundNotificationManager?
Foreground notification manager for in-app dialogs.
no setter
hashCode int
The hash code for this object.
no setterinherited
isInitialized bool
Whether the manager has been initialized.
no setter
onNotificationAction Stream<Map<String, String?>>
Stream of notification action events from both Firebase and Local sources.
no setter
onNotificationDismissed Stream<String>
Stream of dismissed notification IDs from both Firebase and Local sources.
no setter
onNotificationOpened Stream<NotificationPayload>
Stream of opened notifications from both Firebase and Local sources.
no setter
onNotificationReceived Stream<NotificationPayload>
Stream of received notifications from both Firebase and Local sources. Automatically deduplicates notifications based on ID and timestamp.
no setter
permissionManager NotificationPermissionManager
Permission manager for handling notification permissions.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
templates NotificationTemplateBuilder
Template builder for creating pre-defined notification templates.
no setter

Methods

areNotificationsEnabled() Future<(NotificationFailure?, bool?)>
Checks if notifications are currently enabled. Uses local repository for permission checking.
cancelAllNotifications() Future<NotificationFailure?>
Cancels all pending notifications. Cancels from both repositories.
cancelNotification(String id) Future<NotificationFailure?>
Cancels a specific notification by ID. Tries both repositories to ensure cancellation.
checkPermissionStatus() Future<(NotificationFailure?, PermissionStatus)>
Checks the comprehensive permission status.
createNotificationChannel({required String channelId, required String channelName, String? channelDescription, NotificationImportance? importance, bool? enableVibration, bool? enableLights, String? sound}) Future<NotificationFailure?>
Creates a notification channel. Uses local repository for channel creation.
deleteFirebaseToken() Future<NotificationFailure?>
Deletes the Firebase FCM token. This is primarily useful for testing and debugging scenarios. After deletion, a new token will be generated on the next app launch.
dispose() Future<NotificationFailure?>
Disposes the notification manager and cleans up resources.
getDeliveredNotifications() Future<(NotificationFailure?, List<NotificationEntity>?)>
Gets all delivered notifications from both repositories.
getPendingNotifications() Future<(NotificationFailure?, List<NotificationEntity>?)>
Gets all pending notifications from both repositories.
getUserPreferences() UserPreferencesModel?
Gets the current user preferences.
initialize({bool autoRequestPermissions = true, UserPreferencesModel? userPreferences}) Future<NotificationFailure?>
Initializes the notification manager and sets up all repositories.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
openNotificationSettings() Future<NotificationFailure?>
Opens the system notification settings. Uses local repository for settings navigation.
refreshFirebaseToken() Future<String?>
Refreshes the Firebase FCM token. Returns the new token or null if refresh failed.
requestAllPermissions([PermissionRequestConfig config = const PermissionRequestConfig()]) Future<(NotificationFailure?, PermissionStatus)>
Requests all notification permissions with comprehensive handling.
requestPermissions() Future<(NotificationFailure?, bool?)>
Requests notification permissions from the user. This is the legacy method that returns a simple boolean. For more detailed permission handling, use requestAllPermissions.
runSchedulingDiagnostics() Future<Map<String, dynamic>>
Runs comprehensive diagnostics for scheduled notifications debugging.
scheduleNotification(NotificationPayload payload, DateTime scheduledTime, {bool respectUserPreferences = true, bool respectQuietHours = false}) Future<NotificationFailure?>
Schedules a notification for future delivery. Uses local repository for scheduling.
scheduleRecurringNotification(NotificationPayload payload, DateTime firstScheduledTime, RepeatInterval repeatInterval, {DateTime? endDate, bool respectUserPreferences = true, bool respectQuietHours = true}) Future<NotificationFailure?>
Schedules a recurring notification. Uses local repository for recurring scheduling.
showForegroundDialog(NotificationPayload payload, BuildContext? context) Future<NotificationFailure?>
Shows a foreground notification dialog if the app is in foreground.
showNotification(NotificationPayload payload, {bool respectUserPreferences = true}) Future<NotificationFailure?>
Shows a notification immediately with user preferences applied. Uses local repository for immediate display.
subscribeToFirebaseTopic(String topic) Future<NotificationFailure?>
Subscribes to a Firebase topic.
toString() String
A string representation of this object.
inherited
unsubscribeFromFirebaseTopic(String topic) Future<NotificationFailure?>
Unsubscribes from a Firebase topic.
updateUserPreferences(UserPreferencesModel preferences) Future<NotificationFailure?>
Updates user preferences for notifications.

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

getInstance({FirebaseNotificationRepository? firebaseRepository, LocalNotificationRepository? localRepository, NotificationTemplateBuilder? templateBuilder, NotificationScheduler? scheduler, NotificationPermissionManager? permissionManager, ForegroundNotificationConfig? foregroundConfig}) Future<ComprehensiveNotificationManager>
Gets the singleton instance with proper initialization.