---
title: "Scrollable2DState"
description: ""
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
interface Scrollable2DState
```

## Properties

<div class='sourceset sourceset-common'>Common</div>


```kotlin
val isScrollInProgress: Boolean
```


Whether this `Scrollable2DState` is currently scrolling by gesture, fling or programmatically
or not.



## Functions

```kotlin
suspend fun scroll(
        scrollPriority: MutatePriority = MutatePriority.Default,
        block: suspend Scroll2DScope.() -> Unit,
    )
```


Call this function to take control of scrolling and gain the ability to send scroll events
via `Scroll2DScope.scrollBy`. All actions that change the logical scroll position must be
performed within a `scroll` block (even if they don't call any other methods on this object)
in order to guarantee that mutual exclusion is enforced.

If `scroll` is called from elsewhere with the `scrollPriority` higher or equal to ongoing
scroll, ongoing scroll will be canceled.


```kotlin
fun dispatchRawDelta(delta: Offset): Offset
```


Dispatch scroll delta in pixels in both coordinates avoiding all scroll related mechanisms.

**NOTE:** unlike `scroll`, dispatching any delta with this method won't trigger nested
scroll, won't stop ongoing scroll/drag animation and will bypass scrolling of any priority.
This method will also ignore `reverseDirection` and other parameters set in scrollable.

This method is used internally for nested scrolling dispatch and other low level operations,
allowing implementers of `Scrollable2DState` influence the consumption as suits them.
Manually dispatching delta via this method will likely result in a bad user experience, you
must prefer `scroll` method over this one.

#### Parameters

| | |
| --- | --- |
| delta | amount of scroll dispatched in the nested scroll process in both coordinates |


#### Returns

| | |
| --- | --- |
|  | the amount of delta consumed in both coordinates |



```kotlin
fun canScroll(offset: Offset): Boolean
```


Whether this `Scrollable2DState` can scroll using `offset`. This means that this state has
enough space to apply offsets on the direction represented by `offset`. Inferring
directionality from `offset` can be achieved using the angle offered by atan(offset.y,
offset.x). Note that returning `true` here does not imply that offset *will* be consumed. The
Scrollable2DState may decide not to handle the incoming offset (such as if it is already
being scrolled separately).

#### Parameters

| | |
| --- | --- |
| offset | An offset in pixels representing the 2D vector to check against. |


#### Returns

| | |
| --- | --- |
|  | Whether this state can scroll in the direction given by `offset`. |




