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

```kotlin
public class SeekableTransitionState<S>(initialState: S) : TransitionState<S>()
```

A [TransitionState](/jetpack-compose/androidx.compose.animation/animation-core/classes/TransitionState) that can manipulate the progress of the [Transition](/jetpack-compose/androidx.compose.animation/animation-core/classes/Transition) by seeking with `seekTo`
or animating with [animateTo](/jetpack-compose/androidx.compose.animation/animation-core/functions/animateTo).

A [SeekableTransitionState](/jetpack-compose/androidx.compose.animation/animation-core/classes/SeekableTransitionState) can only be used with one [Transition](/jetpack-compose/androidx.compose.animation/animation-core/classes/Transition) instance. Once assigned, it
cannot be reassigned to a different [Transition](/jetpack-compose/androidx.compose.animation/animation-core/classes/Transition) instance.

## Functions

<h2 id="snapto-targetstate">snapTo</h2>

```kotlin
public suspend fun snapTo(targetState: S)
```

Sets [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState) and `targetState` to `targetState` and snaps all values to those at that
state. The transition will not have any animations running after running [snapTo](/jetpack-compose/androidx.compose.foundation/foundation/functions/snapTo).

This can have a similar effect as `seekTo`. However, `seekTo` moves the [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState) to the
former `targetState` and animates the initial values of the animations from the current
values to those at [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState). `seekTo` also allows the developer to move the state
between any fraction between [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState) and `targetState`, while [snapTo](/jetpack-compose/androidx.compose.foundation/foundation/functions/snapTo) moves all state
to `targetState` without any further seeking allowed.

<hr class="docs-overload-divider">

<h2 id="seekto-targetstate">seekTo</h2>

```kotlin
public suspend fun seekTo(
        @FloatRange(from = 0.0, to = 1.0) fraction: Float,
        targetState: S = this.targetState,
    )
```

Starts seeking the transition to `targetState` with `fraction` used to indicate the progress
towards `targetState`. If the previous `targetState` was already `targetState` then `seekTo`
only stops any current animation towards that state and snaps the fraction to the new value.
Otherwise, the [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState) is changed to the former `targetState` and `targetState` is
changed to `targetState` and an animation is started, moving the start values towards the
former `targetState`. This will return when the initial values have reached `currentState`
and the `fraction` has been reached.

[snapTo](/jetpack-compose/androidx.compose.foundation/foundation/functions/snapTo) also allows the developer to change the state, but does not animate any values.
Instead, it instantly moves all values to those at the new `targetState`.

<hr class="docs-overload-divider">

<h2 id="animateto-targetstate-animationspec">animateTo</h2>

```kotlin
public suspend fun animateTo(
        targetState: S = this.targetState,
        animationSpec: FiniteAnimationSpec<Float>? = null,
    )
```

Updates the current `targetState` to `targetState` and begins an animation to the new state.
If the current `targetState` is the same as `targetState` then the current transition
animation is continued. If a previous transition was interrupted, [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState) is changed
to the former `targetState` and the start values are animated toward the former
`targetState`.

Upon completion of the animation, [currentState](/jetpack-compose/androidx.glance/glance/composable-functions/currentState) will be changed to `targetState`.

#### Parameters

| | |
| --- | --- |
| targetState | The state to animate towards. |
| animationSpec | If provided, is used to animate the animation fraction. If `null`, the transition is linearly traversed based on the duration of the transition. |

## Companion Object

#### Properties

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

```kotlin
val ZeroVelocity = AnimationVector1D(0f)
```

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

```kotlin
val Target1 = AnimationVector1D(1f)
```