NavBackStack

A mutable back stack of NavKey elements that integrates with Compose state.

This class wraps a SnapshotStateList so that updates to the stack automatically trigger recomposition in any observing Composables. It also implements StateObject, which allows it to participate in Compose's snapshot system directly.

Typically, you won’t construct a NavBackStack manually. Instead, prefer using rememberNavBackStack, which provides a stack that is automatically saved and restored across process death and configuration changes.

Example

val backStack = NavBackStack(Home("start"))
backStack += Details("item42") // pushes onto stack
backStack.removeLast() // pops stack

See also

for lifecycle-aware persistence.

Samples

androidx.navigation3.runtime.samples.NavBackStack_OpenPolymorphismandroidx.navigation3.runtime.samples.NavBackStack_ClosedPolymorphism

Constructors

Link copied to clipboard
constructor(base: SnapshotStateList<T>)

Creates a new back stack backed by the provided SnapshotStateList.

constructor()
constructor(vararg elements: T)

Properties

Link copied to clipboard
open override val firstStateRecord: StateRecord
Link copied to clipboard
open override val size: Int

Functions

Link copied to clipboard
open override fun add(element: T): Boolean
open override fun add(index: Int, element: T)
Link copied to clipboard
open override fun addAll(elements: Collection<T>): Boolean
open override fun addAll(index: Int, elements: Collection<T>): Boolean
Link copied to clipboard
open override fun clear()
Link copied to clipboard
open operator override fun contains(element: T): Boolean
Link copied to clipboard
open override fun containsAll(elements: Collection<T>): Boolean
Link copied to clipboard
open operator override fun get(index: Int): T
Link copied to clipboard
open override fun indexOf(element: T): Int
Link copied to clipboard
open override fun isEmpty(): Boolean
Link copied to clipboard
open operator override fun iterator(): MutableIterator<T>
Link copied to clipboard
open override fun lastIndexOf(element: T): Int
Link copied to clipboard
open override fun listIterator(): MutableListIterator<T>
open override fun listIterator(index: Int): MutableListIterator<T>
Link copied to clipboard
open override fun mergeRecords(previous: StateRecord, current: StateRecord, applied: StateRecord): StateRecord?
Link copied to clipboard
open override fun prependStateRecord(value: StateRecord)
Link copied to clipboard
open override fun remove(element: T): Boolean
Link copied to clipboard
open override fun removeAll(elements: Collection<T>): Boolean
Link copied to clipboard
open override fun removeAt(index: Int): T
Link copied to clipboard
open override fun retainAll(elements: Collection<T>): Boolean
Link copied to clipboard
open operator override fun set(index: Int, element: T): T
Link copied to clipboard
open override fun subList(fromIndex: Int, toIndex: Int): MutableList<T>