DraggableState
-
Cmn
interface DraggableState
SliderState |
Class that holds information about |
State of draggable
. Allows for a granular control of how deltas are consumed by the user as well as to write custom drag methods using drag
suspend function.
Summary
Public functions |
||
---|---|---|
Unit |
dispatchRawDelta(delta: Float) Dispatch drag delta in pixels avoiding all drag related priority mechanisms. |
Cmn
|
suspend Unit |
drag(dragPriority: MutatePriority, block: suspend DragScope.() -> Unit) Call this function to take control of drag logic. |
Cmn
|
Public functions
dispatchRawDelta
fun dispatchRawDelta(delta: Float): Unit
Dispatch drag delta in pixels avoiding all drag related priority mechanisms.
NOTE: unlike drag
, dispatching any delta with this method will bypass scrolling of any priority. This method will also ignore reverseDirection
and other parameters set in draggable
.
This method is used internally for low level operations, allowing implementers of DraggableState
influence the consumption as suits them, e.g. introduce nested scrolling. Manually dispatching delta via this method will likely result in a bad user experience, you must prefer drag
method over this one.
Parameters | |
---|---|
delta: Float |
amount of scroll dispatched in the nested drag process |
drag
suspend fun drag(
dragPriority: MutatePriority = MutatePriority.Default,
block: suspend DragScope.() -> Unit
): Unit
Call this function to take control of drag logic.
All actions that change the logical drag position must be performed within a drag
block (even if they don't call any other methods on this object) in order to guarantee that mutual exclusion is enforced.
If drag
is called from elsewhere with the dragPriority
higher or equal to ongoing drag, ongoing drag will be canceled.
Parameters | |
---|---|
dragPriority: MutatePriority = MutatePriority.Default |
of the drag operation |
block: suspend DragScope.() -> Unit |
to perform drag in |