# PickerState

Artifact: [androidx.wear.compose:compose-material](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/material/Picker.kt+class:androidx.wear.compose.material.PickerState) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)


```
class PickerState : ScrollableState
```

<br />

*** ** * ** ***

A state object that can be hoisted to observe item selection.

In most cases, this will be created via `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/rememberPickerState.composable#rememberPickerState(kotlin.Int,kotlin.Int,kotlin.Boolean)`.

## Summary

| ### Public companion properties |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver<https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html>` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#Saver()` The default `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#Saver()` implementation for `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState`. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#PickerState(kotlin.Int,kotlin.Int,kotlin.Boolean)( initialNumberOfOptions: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, initiallySelectedOption: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, repeatItems: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` |

| ### Public functions |
|---|---|
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#animateScrollToOption(kotlin.Int)(index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Animate (smooth scroll) to the given item at `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#animateScrollToOption(kotlin.Int)` |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#dispatchRawDelta(kotlin.Float)(delta: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` |
| `open suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#scroll(androidx.compose.foundation.MutatePriority,kotlin.coroutines.SuspendFunction1)(scrollPriority: https://developer.android.com/reference/kotlin/androidx/compose/foundation/MutatePriority, block: suspend https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/ScrollScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` |
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#scrollToOption(kotlin.Int)(index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Instantly scroll to an item. |

| ### Public properties |
|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#canScrollBackward()` |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#canScrollForward()` |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#isScrollInProgress()` |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#numberOfOptions()` |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#repeatItems()` if true (the default), the contents of the component will be repeated |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#selectedOption()` Index of the option selected (i.e., at the center) |

| ### Inherited properties |
|---|
| From [androidx.compose.foundation.gestures.ScrollableState](https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/ScrollableState) |---|---| | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/ScrollableState#lastScrolledBackward()` | | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/ScrollableState#lastScrolledForward()` | | `open https://developer.android.com/reference/kotlin/androidx/compose/foundation/ScrollIndicatorState?` | `https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/ScrollableState#scrollIndicatorState()` | |

## Public companion properties

### Saver

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
val Saver: Saver<PickerState, Any>
```

The default `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#Saver()` implementation for `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState`.

## Public constructors

### PickerState

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
PickerState(
    initialNumberOfOptions: Int,
    initiallySelectedOption: Int = 0,
    repeatItems: Boolean = true
)
```

| Parameters |
|---|---|
| `initialNumberOfOptions: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the number of options |
| `initiallySelectedOption: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = 0` | the option to show in the center at the start |
| `repeatItems: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = true` | if true (the default), the contents of the component will be repeated |

## Public functions

### animateScrollToOption

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.2.0)

```
suspend fun animateScrollToOption(index: Int): Unit
```

Animate (smooth scroll) to the given item at `https://developer.android.com/reference/kotlin/androidx/wear/compose/material/PickerState#animateScrollToOption(kotlin.Int)`

A smooth scroll always happens to the closest item if PickerState has repeatItems=true. For example, picker values are : 0 1 2 3 0 1 2 3 0 1 2 3 Target value is 0. 0 1 2 3 \>0\< 1 2 3\>0\< 1 2 3 Picker can be scrolled forwards or backwards. To get to the target 0 it requires 1 step to scroll forwards and 3 steps to scroll backwards. Picker will be scrolled forwards as this is the closest destination.

If the distance between possible targets is the same, picker will be scrolled backwards.

```kotlin
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.wear.compose.material.Chip
import androidx.wear.compose.material.Picker
import androidx.wear.compose.material.Text
import androidx.wear.compose.material.rememberPickerState

val coroutineScope = rememberCoroutineScope()
val state = rememberPickerState(initialNumberOfOptions = 10)
val contentDescription by remember { derivedStateOf { "${state.selectedOption + 1}" } }

Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
    Picker(state = state, separation = 4.dp, contentDescription = contentDescription) {
        Chip(
            onClick = { coroutineScope.launch { state.animateScrollToOption(it) } },
            label = { Text("$it") },
        )
    }
}
```

| Parameters |
|---|---|
| `index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the option to scroll to. |

### dispatchRawDelta

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
open fun dispatchRawDelta(delta: Float): Float
```

### scroll

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
open suspend fun scroll(scrollPriority: MutatePriority, block: suspend ScrollScope.() -> Unit): Unit
```

### scrollToOption

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
suspend fun scrollToOption(index: Int): Unit
```

Instantly scroll to an item.

```kotlin
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.unit.dp
import androidx.wear.compose.material.Chip
import androidx.wear.compose.material.Picker
import androidx.wear.compose.material.Text
import androidx.wear.compose.material.rememberPickerState

val coroutineScope = rememberCoroutineScope()
val state = rememberPickerState(initialNumberOfOptions = 10)
val contentDescription by remember { derivedStateOf { "${state.selectedOption + 1}" } }
Picker(state = state, separation = 4.dp, contentDescription = contentDescription) {
    Chip(
        onClick = { coroutineScope.launch { state.scrollToOption(it) } },
        label = { Text("$it") },
    )
}
```

| Parameters |
|---|---|
| `index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the option to scroll to. |

## Public properties

### canScrollBackward

```
open val canScrollBackward: Boolean
```

### canScrollForward

```
open val canScrollForward: Boolean
```

### isScrollInProgress

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
open val isScrollInProgress: Boolean
```

### numberOfOptions

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
var numberOfOptions: Int
```

### repeatItems

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
val repeatItems: Boolean
```

if true (the default), the contents of the component will be repeated

### selectedOption

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
val selectedOption: Int
```

Index of the option selected (i.e., at the center)