# MutableStateFlowSerializer

Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/serializers/MutableStateFlowSerializer.kt+class:androidx.savedstate.serialization.serializers.MutableStateFlowSerializer) Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.3.0)

*** ** * ** ***


```
public final class MutableStateFlowSerializer<T extends Object> implements KSerializer<@NonNull MutableStateFlow<@NonNull T>>
```

<br />

*** ** * ** ***

A `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html`.

This class wraps a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for the inner value type `https://developer.android.com/reference/androidx/savedstate/serialization/serializers/MutableStateFlowSerializer`, enabling serialization and deserialization of `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html` instances. The inner value serialization is delegated to the provided `https://developer.android.com/reference/androidx/savedstate/serialization/serializers/MutableStateFlowSerializer#(kotlinx.serialization.KSerializer)`.

Note that the SavedState format uses this serializer automatically for a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html` at root and there is no need to explicitly specify it. For example:

```
val msf = MutableStateFlow(123)
// No need to do `encodeToSavedState(MutableStateFlowSerializer(Int.serializer), msf)`
encodeToSavedState(msf)
```

However, when the `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html` is a property of a serializable class there is no automatic fallback and a `Serializable` annotation is still needed if the property is intended to be serialized with this serializer. For example:

```
@Serializable
data class MyData(
    @Serializable(with = MutableStateFlowSerializer::class)
    val flow: MutableStateFlow<Int>
)
```

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html>` | The type of the value stored in the `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html`. |

## Summary

| ### Public constructors |
|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/savedstate/serialization/serializers/MutableStateFlowSerializer#MutableStateFlowSerializer(kotlinx.serialization.KSerializer)( @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> valueSerializer )` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `https://developer.android.com/reference/androidx/savedstate/serialization/serializers/MutableStateFlowSerializer#deserialize(kotlinx.serialization.encoding.Decoder)(@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.encoding/-decoder/index.html decoder)` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.descriptors/-serial-descriptor/index.html` | `https://developer.android.com/reference/androidx/savedstate/serialization/serializers/MutableStateFlowSerializer#getDescriptor()()` |
| `void` | `https://developer.android.com/reference/androidx/savedstate/serialization/serializers/MutableStateFlowSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlinx.coroutines.flow.MutableStateFlow)( @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.encoding/-encoder/index.html encoder, @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> value )` |

## Public constructors

### MutableStateFlowSerializer

```
public <T extends Object> MutableStateFlowSerializer(
    @NonNull KSerializer<@NonNull T> valueSerializer
)
```

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html>` | The type of the value stored in the `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-mutable-state-flow/index.html`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> valueSerializer` | The `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` used to serialize and deserialize the inner value. |

## Public methods

### deserialize

Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.3.0)

```
public @NonNull MutableStateFlow<@NonNull T> deserialize(@NonNull Decoder decoder)
```

### getDescriptor

Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.3.0)

```
public @NonNull SerialDescriptor getDescriptor()
```

### serialize

Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.3.0)

```
public void serialize(
    @NonNull Encoder encoder,
    @NonNull MutableStateFlow<@NonNull T> value
)
```