# SavedStateHandleDelegateKt

Added in 2.9.0

*** ** * ** ***


```
public final class SavedStateHandleDelegateKt
```

<br />

*** ** * ** ***

## Summary

| ### Public methods |
|---|---|
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://developer.android.com/reference/java/lang/Object.html, @https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/lifecycle/serialization/SavedStateHandleDelegateKt#(androidx.lifecycle.SavedStateHandle).savedNullable(kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle receiver, https://developer.android.com/reference/java/lang/String.html key, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> init )` Returns a property delegate that uses `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` to save and restore a value of type `https://developer.android.com/reference/androidx/lifecycle/serialization/package-summary#(androidx.lifecycle.SavedStateHandle).saved(kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` with the default serializer. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://developer.android.com/reference/java/lang/Object.html, @https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/lifecycle/serialization/SavedStateHandleDelegateKt#(androidx.lifecycle.SavedStateHandle).savedNullable(kotlinx.serialization.KSerializer,kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle receiver, @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> serializer, https://developer.android.com/reference/java/lang/String.html key, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> init )` Returns a property delegate that uses `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` to save and restore a value of type `https://developer.android.com/reference/androidx/lifecycle/serialization/package-summary#(androidx.lifecycle.SavedStateHandle).saved(kotlinx.serialization.KSerializer,kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`. |

## Public methods

### savedNullable

Artifact: [androidx.lifecycle:lifecycle-viewmodel-savedstate](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/serialization/SavedStateHandleDelegate.kt+function:saved)

```
public static final @NonNull ReadWriteProperty<Object, @NonNull T> <T extends Object> savedNullable(
    @NonNull SavedStateHandle receiver,
    String key,
    @NonNull SavedStateConfiguration configuration,
    @NonNull Function0<@NonNull T> init
)
```

Returns a property delegate that uses `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` to save and restore a value of type `https://developer.android.com/reference/androidx/lifecycle/serialization/package-summary#(androidx.lifecycle.SavedStateHandle).saved(kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` with the default serializer.

```kotlin
import androidx.lifecycle.serialization.saved

@Serializable data class User(val id: Int, val name: String)
class ProfileViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
    val user by savedStateHandle.saved(key = "bar") { User(123, "foo") }
}
```

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html key` | An optional `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` key to use for storing the value in the `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle`. A default key will be generated if it's omitted or when 'null' is passed. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration` | The `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> init` | The function to provide the initial value of the property. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://developer.android.com/reference/java/lang/Object.html, @https://developer.android.com/reference/androidx/annotation/NonNull T>` | A property delegate that manages the saving and restoring of the value. |

### savedNullable

Artifact: [androidx.lifecycle:lifecycle-viewmodel-savedstate](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/serialization/SavedStateHandleDelegate.kt+function:saved) Added in [2.10.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.10.0)

```
public static final @NonNull ReadWriteProperty<Object, @NonNull T> <T extends Object> savedNullable(
    @NonNull SavedStateHandle receiver,
    @NonNull KSerializer<@NonNull T> serializer,
    String key,
    @NonNull SavedStateConfiguration configuration,
    @NonNull Function0<@NonNull T> init
)
```

Returns a property delegate that uses `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` to save and restore a value of type `https://developer.android.com/reference/androidx/lifecycle/serialization/package-summary#(androidx.lifecycle.SavedStateHandle).saved(kotlinx.serialization.KSerializer,kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`.

```kotlin
import androidx.lifecycle.serialization.saved

@Serializable data class User(val id: Int, val name: String)
class ProfileViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
    val user by
        savedStateHandle.saved(key = "bar", serializer = User::class.serializer()) {
            User(123, "foo")
        }
}
```

| Parameters |
|---|---|
| `@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> serializer` | The `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` to use for serializing and deserializing the value. |
| `https://developer.android.com/reference/java/lang/String.html key` | An optional `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` key to use for storing the value in the `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle`. A default key will be generated if it's omitted or when 'null' is passed. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration` | The `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> init` | The function to provide the initial value of the property. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://developer.android.com/reference/java/lang/Object.html, @https://developer.android.com/reference/androidx/annotation/NonNull T>` | A property delegate that manages the saving and restoring of the value. |