# ShuffleButtonState

Artifact: [androidx.media3:media3-ui-compose](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/ui/compose/state/ShuffleButtonState.kt+class:androidx.media3.ui.compose.state.ShuffleButtonState)

<br />

```
@UnstableApi
class ShuffleButtonState
```

<br />

*** ** * ** ***

State that holds all interactions to correctly deal with a UI component representing a Shuffle On/Off button.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#ShuffleButtonState(androidx.media3.common.Player)(player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?)` |

| ### Public functions |
|---|---|
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#observe()()` Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#onClick()()` Handles the interaction with the ShuffleButton according to the current state of the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player`. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#isEnabled()` true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#player()` is not `null` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SHUFFLE_MODE()` is available. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#shuffleOn()` true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#player()` is not `null` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#shuffleModeEnabled()` is enabled. |

## Public constructors

### ShuffleButtonState

```
ShuffleButtonState(player: Player?)
```

## Public functions

### observe

```
suspend fun observe(): Unit
```

Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_SHUFFLE_MODE_ENABLED_CHANGED()` in order to determine the latest `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#getShuffleModeEnabled()`.

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_AVAILABLE_COMMANDS_CHANGED()` in order to determine whether the button should be enabled, i.e. respond to user input.

### onClick

```
fun onClick(): Unit
```

Handles the interaction with the ShuffleButton according to the current state of the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player`.

This method does nothing if `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SHUFFLE_MODE()` is not available

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setShuffleModeEnabled(boolean)` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SHUFFLE_MODE()` |   |

## Public properties

### isEnabled

```
val isEnabled: Boolean
```

true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#player()` is not `null` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SHUFFLE_MODE()` is available.

### shuffleOn

```
val shuffleOn: Boolean
```

true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/ShuffleButtonState#player()` is not `null` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#shuffleModeEnabled()` is enabled.