PushNotificationBloc class

Manages Firebase Cloud Messaging push notifications.

This BLoC handles the complete push notification lifecycle including:

  • Requesting and managing notification permissions
  • Registering device tokens with the backend
  • Processing foreground notifications
  • Handling notification taps and deep links
  • Managing initial notification when app is launched from terminated state

The bloc integrates with Firebase Cloud Messaging and maintains notification state for the application.

Constructors

PushNotificationBloc()
Creates a push notification bloc with initial state.
PushNotificationBloc.fromInitialMessage(RemoteMessage? initialMessage)
Creates a push notification bloc with an initial notification message.

Properties

hashCode int
The hash code for this object.
no setterinherited
isClosed bool
Whether the bloc is closed.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
state PushNotificationState
The current state.
no setterinherited
stream Stream<PushNotificationState>
The current stream of states.
no setterinherited

Methods

add(PushNotificationEvent event) → void
Notifies the Bloc of a new event which triggers all corresponding EventHandler instances.
inherited
addError(Object error, [StackTrace? stackTrace]) → void
Reports an error which triggers onError with an optional StackTrace.
inherited
close() Future<void>
Closes the event and state Streams. This method should be called when a Bloc is no longer needed. Once close is called, events that are added will not be processed. In addition, if close is called while events are still being processed, the Bloc will finish processing the pending events.
inherited
emit(PushNotificationState state) → void
emit is only for internal use and should never be called directly outside of tests. The Emitter instance provided to each EventHandler should be used instead.
inherited
getInitialNotification() Future<UserNotification?>
Retrieves the notification that launched the app from terminated state.
hasNotificationPermission() Future<bool>
Checks if the app has been granted notification permissions.
initializeNotifications({required String appId, String? channelName}) Future<void>
Initializes push notification system with permissions and handlers.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
on<E extends Event>(EventHandler<E, PushNotificationState> handler, {EventTransformer<E>? transformer}) → void
Register event handler for an event of type E. There should only ever be one event handler per event type E.
inherited
onChange(Change<PushNotificationState> change) → void
Called whenever a change occurs with the given change. A change occurs when a new state is emitted. onChange is called before the state of the cubit is updated. onChange is a great spot to add logging/analytics for a specific cubit.
inherited
onClose() Future<void>
Cleans up notification subscriptions.
onDone(PushNotificationEvent event, [Object? error, StackTrace? stackTrace]) → void
Called whenever an event handler for a specific Bloc has completed. This may include an error and stackTrace if an uncaught exception occurred within the event handler.
inherited
onError(Object error, StackTrace stackTrace) → void
Called whenever an error occurs and notifies BlocObserver.onError.
inherited
onEvent(PushNotificationEvent event) → void
Called whenever an event is added to the Bloc. A great spot to add logging/analytics at the individual Bloc level.
inherited
onTransition(Transition<PushNotificationEvent, PushNotificationState> transition) → void
Called whenever a transition occurs with the given transition. A transition occurs when a new event is added and a new state is emitted from a corresponding EventHandler.
inherited
registerDeviceToken(String appCode) Future<void>
Registers this device's FCM token with the backend.
requestNotificationPermission() Future<bool>
Requests notification permissions from the user.
toString() String
A string representation of this object.
inherited
unregisterDeviceToken({int? subSystemId, required String appCode}) Future<void>
Unregisters this device's FCM token from the backend.

Operators

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

Static Methods

setBackgroundMessageHandler(Future<void> handler(RemoteMessage message)) → void
Sets the handler for notifications received in the background.