NavigationEventCallback


Known direct subclasses
TestNavigationEventCallback

A test implementation of NavigationEventCallback that records received events and invocation counts.


Receives and handles NavigationEvents dispatched by a NavigationEventDispatcher.

This is the base class you should extend to create custom navigation event logic. Callbacks are added to a NavigationEventDispatcher and will only receive events when both the callback and its dispatcher are enabled.

Summary

Public constructors

Cmn

Public functions

Unit

Removes this callback from the NavigationEventDispatcher it is registered with.

Cmn
Unit
setInfo(currentInfo: T, previousInfo: T?)

Updates the current and previous navigation information for this callback.

Cmn

Protected functions

open Unit

Override this to handle the cancellation of a navigation event.

Cmn
abstract Unit

Override this to handle the completion of a navigation event.

Cmn
open Unit

Override this to handle the progress of an ongoing navigation event.

Cmn
open Unit

Override this to handle the beginning of a navigation event.

Cmn

Public properties

Boolean

Controls whether this callback is active and should be considered for event dispatching.

Cmn

Public constructors

<T : NavigationEventInfo> NavigationEventCallback(isEnabled: Boolean = true)
Parameters
isEnabled: Boolean = true

The initial enabled state for this callback. Defaults to true.

Public functions

remove

fun remove(): Unit

Removes this callback from the NavigationEventDispatcher it is registered with. If the callback is not registered, this call does nothing.

setInfo

fun setInfo(currentInfo: T, previousInfo: T?): Unit

Updates the current and previous navigation information for this callback.

This method updates the callback's local info and then notifies the central NavigationEventProcessor. The processor is responsible for deciding whether to update the global navigation state, ensuring that only the highest-priority callback can influence the state.

Parameters
currentInfo: T

The new navigation information to be set as the current state.

previousInfo: T?

The navigation information to be set as the previous state.

Protected functions

onEventCancelled

@EmptySuper
protected open fun onEventCancelled(): Unit

Override this to handle the cancellation of a navigation event.

This is called when the user cancels the navigation action (e.g., by returning their finger to the edge of the screen), signaling that the UI should return to its original state.

onEventCompleted

protected abstract fun onEventCompleted(): Unit

Override this to handle the completion of a navigation event.

This is called when the user commits to the navigation action (e.g., by lifting their finger at the end of a swipe), signaling that the navigation should be finalized.

onEventProgressed

@EmptySuper
protected open fun onEventProgressed(event: NavigationEvent): Unit

Override this to handle the progress of an ongoing navigation event.

This is called repeatedly during a gesture-driven navigation (e.g., a predictive back swipe) to update the UI in real-time based on the user's input.

Parameters
event: NavigationEvent

The NavigationEvent containing progress information.

onEventStarted

@EmptySuper
protected open fun onEventStarted(event: NavigationEvent): Unit

Override this to handle the beginning of a navigation event.

This is called when a user action, such as a swipe gesture, initiates a navigation. It's the ideal place to prepare UI elements for a transition.

Parameters
event: NavigationEvent

The NavigationEvent that triggered this callback.

Public properties

isEnabled

var isEnabledBoolean

Controls whether this callback is active and should be considered for event dispatching.

A callback's effective enabled state is hierarchical; it is directly influenced by the NavigationEventDispatcher it is registered with.

Getting the value:

  • This will return false if the associated dispatcher exists and its isEnabled state is false, regardless of the callback's own local setting. This provides a powerful mechanism to disable a whole group of callbacks at once by simply disabling their dispatcher.

  • Otherwise, it returns the callback's own locally stored state.

Setting the value:

  • This updates the local enabled state of the callback itself.

  • More importantly, it immediately notifies the dispatcher (if one is attached) that its list of enabled callbacks might have changed, prompting a re-evaluation. This ensures the system's state remains consistent and responsive to changes.

For a callback to be truly active, both its local isEnabled property and its dispatcher's isEnabled property must evaluate to true.