# RepeatButtonState

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/RepeatButtonState.kt+class:androidx.media3.ui.compose.state.RepeatButtonState)

<br />

```
@UnstableApi
class RepeatButtonState
```

<br />

*** ** * ** ***

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

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#RepeatButtonState(androidx.media3.common.Player,kotlin.collections.List)( player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?, toggleModeSequence: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html> )` |

| ### 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/RepeatButtonState#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/RepeatButtonState#onClick()()` Cycles to the next repeat mode in the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#toggleModeSequence()`. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#isEnabled()` true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#player()` is not `null`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_REPEAT_MODE()` is available, and `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#toggleModeSequence()` is not empty. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#repeatModeState()` determined by `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#getRepeatMode()`. |

## Public constructors

### RepeatButtonState

```
RepeatButtonState(
    player: Player?,
    toggleModeSequence: List<@Player.RepeatMode Int> = listOf(Player.REPEAT_MODE_OFF, Player.REPEAT_MODE_ONE, Player.REPEAT_MODE_ALL)
)
```

| Parameters |
|---|---|
| `player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?` | `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` object that operates as a state provider and can be control via clicking |
| `toggleModeSequence: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html> = listOf(Player.REPEAT_MODE_OFF, Player.REPEAT_MODE_ONE, Player.REPEAT_MODE_ALL)` | An ordered list of `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode`s to cycle through when the button is clicked. Defaults to `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#REPEAT_MODE_OFF()`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#REPEAT_MODE_ONE()`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#REPEAT_MODE_ALL()`. |

## 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_REPEAT_MODE_CHANGED()` in order to determine the latest `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#getRepeatMode()`.

- `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
```

Cycles to the next repeat mode in the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#toggleModeSequence()`. If the current repeat mode from the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` is not among the modes in the provided `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#toggleModeSequence()`, pick the first one.

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

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setRepeatMode(int)` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_REPEAT_MODE()` |   |

## Public properties

### isEnabled

```
val isEnabled: Boolean
```

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

### repeatModeState

```
val repeatModeState: Int
```

determined by `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#getRepeatMode()`. Defaults to `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#REPEAT_MODE_OFF()` if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#player()` is `null`. Note that there is no guarantee for this state to be one from `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#toggleModeSequence()`. A button click in such case will toggle the mode into the first one of `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/RepeatButtonState#toggleModeSequence()`.