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
var currentAnchor
The current anchor that pane expansion has been settled or is settling to. Note that this field might be null if:
- No anchors have been set to the state.
- Pane expansion is set directly via setFirstPaneWidth or set setFirstPaneProportion.
- 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
const val Unspecified = -1
The constant value used to denote the pane expansion is not specified.