# PlayPauseButton

## Functions summary

|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/PlayPauseButton.composable#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)( player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?, modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier, displayMode: @https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, imageVector: https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector, iconSize: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, contentDescription: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, colors: https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonColors, tint: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color, onClick: https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` A Material3 `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButton.composable#IconButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.material3.IconButtonColors,androidx.compose.foundation.interaction.MutableInteractionSource,androidx.compose.ui.graphics.Shape,kotlin.Function0)` that plays or pauses the current media item. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/PlayPauseButton.composable#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)( player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?, modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier, displayMode: @https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, painter: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/painter/Painter, iconSize: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, contentDescription: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, colors: https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonColors, tint: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color, onClick: https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` A Material3 `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButton.composable#IconButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.material3.IconButtonColors,androidx.compose.foundation.interaction.MutableInteractionSource,androidx.compose.ui.graphics.Shape,kotlin.Function0)` that plays or pauses the current media item. |

## Functions

### PlayPauseButton

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

```
@UnstableApi
@Composable
fun PlayPauseButton(
    player: Player?,
    modifier: Modifier = Modifier,
    displayMode: @DisplayMode Int = SHOW_BUFFERING_ALWAYS or SHOW_REPLAY_ON_ENDED or SHOW_RETRY_ON_ERROR,
    imageVector: PlayPauseButtonState.() -> ImageVector,
    iconSize: Dp = PlayerTokens.MediumIconSize,
    contentDescription: @Composable PlayPauseButtonState.() -> String = defaultPlayPauseContentDescription,
    colors: IconButtonColors = IconButtonDefaults.iconButtonColors(),
    tint: Color = Color.Unspecified,
    onClick: PlayPauseButtonState.() -> Unit = PlayPauseButtonState::onClick
): Unit
```

A Material3 `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButton.composable#IconButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.material3.IconButtonColors,androidx.compose.foundation.interaction.MutableInteractionSource,androidx.compose.ui.graphics.Shape,kotlin.Function0)` that plays or pauses the current media item.

When clicked, it will pause the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)` if it's currently playing, or play it otherwise. The button's state (e.g., whether it's enabled and the current play/pause icon) is managed by a `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState` instance derived from the provided `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)`.

| Parameters |
|---|---|
| `player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` to control. |
| `modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier = Modifier` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` to be applied to the button container. |
| `displayMode: @https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = SHOW_BUFFERING_ALWAYS or SHOW_REPLAY_ON_ENDED or SHOW_RETRY_ON_ERROR` | The `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode` determining under which conditions buffering, replay, or retry indicators should be shown. Defaults to `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/package-summary#SHOW_BUFFERING_ALWAYS()` combined with `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/package-summary#SHOW_REPLAY_ON_ENDED()` and `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/package-summary#SHOW_RETRY_ON_ERROR()`. |
| `imageVector: https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector` | The supplier for `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector` used for the icon displayed on the button. This is a composable lambda with `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState` as its receiver, allowing the icon to be updated based on the button's current state (e.g., `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showPlay()`). |
| `iconSize: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = PlayerTokens.MediumIconSize` | The size of the icon. |
| `contentDescription: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html = defaultPlayPauseContentDescription` | The content description for accessibility purposes. |
| `colors: https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonColors = IconButtonDefaults.iconButtonColors()` | `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonColors` that will be used to resolve the colors used for this icon button and buffering indicator. See `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonDefaults#iconButtonColors()`. |
| `tint: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color = Color.Unspecified` | Tint to be applied to `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)`. If `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color#Unspecified()` is provided, then no tint is applied. |
| `onClick: https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html = PlayPauseButtonState::onClick` | The action to be performed when the button is clicked. This lambda has `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState` as its receiver, providing access to the button's current state (e.g., `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#isEnabled()`). The default behavior is to call `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#onClick()`, which toggles the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)` play/pause state. Consumers can customize this behavior: - To add custom logic while still performing the default action, call `this.onClick()` within your lambda. - To completely override the default behavior, implement your custom logic without calling `this.onClick()`. |

### PlayPauseButton

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

```
@UnstableApi
@Composable
fun PlayPauseButton(
    player: Player?,
    modifier: Modifier = Modifier,
    displayMode: @DisplayMode Int = SHOW_BUFFERING_ALWAYS or SHOW_REPLAY_ON_ENDED or SHOW_RETRY_ON_ERROR,
    painter: @Composable PlayPauseButtonState.() -> Painter = defaultPlayPausePainterIcon,
    iconSize: Dp = PlayerTokens.MediumIconSize,
    contentDescription: @Composable PlayPauseButtonState.() -> String = defaultPlayPauseContentDescription,
    colors: IconButtonColors = IconButtonDefaults.iconButtonColors(),
    tint: Color = Color.Unspecified,
    onClick: PlayPauseButtonState.() -> Unit = PlayPauseButtonState::onClick
): Unit
```

A Material3 `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButton.composable#IconButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.material3.IconButtonColors,androidx.compose.foundation.interaction.MutableInteractionSource,androidx.compose.ui.graphics.Shape,kotlin.Function0)` that plays or pauses the current media item.

When clicked, it will pause the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)` if it's currently playing, or play it otherwise. The button's state (e.g., whether it's enabled and the current play/pause icon) is managed by a `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState` instance derived from the provided `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)`.

| Parameters |
|---|---|
| `player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` to control. |
| `modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier = Modifier` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` to be applied to the button container. |
| `displayMode: @https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = SHOW_BUFFERING_ALWAYS or SHOW_REPLAY_ON_ENDED or SHOW_RETRY_ON_ERROR` | The `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode` determining under which conditions buffering, replay, or retry indicators should be shown. Defaults to `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/package-summary#SHOW_BUFFERING_ALWAYS()` combined with `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/package-summary#SHOW_REPLAY_ON_ENDED()` and `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/package-summary#SHOW_RETRY_ON_ERROR()`. |
| `painter: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/painter/Painter = defaultPlayPausePainterIcon` | The supplier for `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/painter/Painter` used for the icon displayed on the button. This is a composable lambda with `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState` as its receiver, allowing the icon to be updated based on the button's current state (e.g., `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showPlay()`). |
| `iconSize: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = PlayerTokens.MediumIconSize` | The size of the icon. |
| `contentDescription: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html = defaultPlayPauseContentDescription` | The content description for accessibility purposes. |
| `colors: https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonColors = IconButtonDefaults.iconButtonColors()` | `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonColors` that will be used to resolve the colors used for this icon button and buffering indicator. See `https://developer.android.com/reference/kotlin/androidx/compose/material3/IconButtonDefaults#iconButtonColors()`. |
| `tint: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color = Color.Unspecified` | Tint to be applied to `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)`. If `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color#Unspecified()` is provided, then no tint is applied. |
| `onClick: https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html = PlayPauseButtonState::onClick` | The action to be performed when the button is clicked. This lambda has `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState` as its receiver, providing access to the button's current state (e.g., `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#isEnabled()`). The default behavior is to call `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#onClick()`, which toggles the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/buttons/package-summary#PlayPauseButton(androidx.media3.common.Player,androidx.compose.ui.Modifier,kotlin.Int,kotlin.Function1,androidx.compose.ui.unit.Dp,kotlin.Function1,androidx.compose.material3.IconButtonColors,androidx.compose.ui.graphics.Color,kotlin.Function1)` play/pause state. Consumers can customize this behavior: - To add custom logic while still performing the default action, call `this.onClick()` within your lambda. - To completely override the default behavior, implement your custom logic without calling `this.onClick()`. |