Class

PaneExpansionState

This class manages the pane expansion state for pane scaffolds.

RevenueCat

RevenueCat

Add subscriptions to your apps in minutes

Ad Get started for free
Common
class PaneExpansionState
internal constructor(
    data: PaneExpansionStateData = PaneExpansionStateData(),
    @get:VisibleForTesting internal val consumeDragDelta: ((Float) -> Float) = noOpConsumeDragDelta,
)

This class manages the pane expansion state for pane scaffolds. By providing and modifying an instance of this class, you can specify the expanded panes' expansion width or proportion when pane scaffold is displaying a dual-pane layout.

This class also serves as the DraggableState of pane expansion handle. When a handle implementation is provided to the associated pane scaffold, the scaffold will use PaneExpansionState to store and manage dragging and anchoring of the handle, and thus the pane expansion state.

Properties

Common
var currentAnchor

The current anchor that pane expansion has been settled or is settling to. Note that this field might be null if:

  1. No anchors have been set to the state.
  2. Pane expansion is set directly via setFirstPaneWidth or set setFirstPaneProportion.
  3. Pane expansion is in its initial state without an initial anchor provided.

Functions

isUnspecified

fun isUnspecified(): Boolean

Returns true if none of firstPaneWidth or firstPaneProportion has been set.


setFirstPaneWidth

fun setFirstPaneWidth(firstPaneWidth: Int)

Set the width of the first expanded pane in the layout. When the set value gets applied, it will be coerced within the range of [0, the full displayable width of the layout].

Note that setting this value will reset the first pane proportion previously set via setFirstPaneProportion or the current dragging result if there's any. Also if user drags the pane after setting the first pane width, the user dragging result will take the priority over this set value when rendering panes, but the set value will be saved.


setFirstPaneProportion

fun setFirstPaneProportion(@FloatRange(0.0, 1.0) firstPaneProportion: Float)

Set the proportion of the first expanded pane in the layout. The set value needs to be within the range of [0f, 1f], otherwise the setter throws.

Note that setting this value will reset the first pane width previously set via setFirstPaneWidth or the current dragging result if there's any. Also if user drags the pane after setting the first pane proportion, the user dragging result will take the priority over this set value when rendering panes, but the set value will be saved.


animateTo

suspend fun animateTo(anchor: PaneExpansionAnchor, initialVelocity: Float = 0F)

Animate the pane expansion to the given PaneExpansionAnchor. Note that the given anchor must be one of the provided anchor when creating the state with rememberPaneExpansionState; otherwise the function throws.

Parameters

anchor the anchor to animate to
initialVelocity the initial velocity of the animation

clear

fun clear()

Clears any previously set firstPaneWidth or firstPaneProportion, as well as the user dragging result.

Companion Object

Properties

Common
const val Unspecified = -1

The constant value used to denote the pane expansion is not specified.