# viewModel

Common/AllAndroid/JVM

## Functions summary

|---|---|---|
| `inline VM` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <VM : https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel> https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/viewModel.composable#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1)( viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner, key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, noinline initializer: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.() -> VM )` Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the scope (usually, a fragment or an activity) | Cmn |
| `inline VM` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <VM : https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel> https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/viewModel.composable#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)( viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner, key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, factory: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory?, extras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras )` Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the given owner (usually, a fragment or an activity), defaulting to the owner provided by `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner`. | Cmn |
| `VM` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <VM : https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel> https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/viewModel.composable#viewModel(java.lang.Class,androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)( modelClass: https://developer.android.com/reference/java/lang/Class.html<VM>, viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner, key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, factory: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory?, extras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras )` Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the scope (usually, a fragment or an activity) | android |
| `VM` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <VM : https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel> https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/viewModel.composable#viewModel(kotlin.reflect.KClass,androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)( modelClass: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<VM>, viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner, key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, factory: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory?, extras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras )` Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the scope (usually, a fragment or an activity) | Cmn |

## Functions

### viewModel

Cmn Artifact: [androidx.lifecycle:lifecycle-viewmodel-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/compose/ViewModel.kt+function:viewModel)

```
@Composable
inline fun <VM : ViewModel> viewModel(
    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
            "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
        },
    key: String? = null,
    noinline initializer: CreationExtras.() -> VM
): VM
```

Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the scope (usually, a fragment or an activity)

The created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is associated with the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1)` and will be retained as long as the scope is alive (e.g. if it is an activity, until it is finished or process is killed).

If the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1)` implements `https://developer.android.com/reference/kotlin/androidx/lifecycle/HasDefaultViewModelProviderFactory` its default `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` are the ones that will be provided to the receiver scope from the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1)`

```kotlin
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.createSavedStateHandle
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import androidx.lifecycle.viewmodel.compose.viewModel

// Just like any call to viewModel(), the default owner is the LocalViewModelStoreOwner.current.
// The lambda is only called the first time the ViewModel needs to be created.
val viewModel = viewModel {
    // Within the lambda, you have direct access to the CreationExtras which allows you to call
    // extension methods on CreationExtras such as createSavedStateHandle()
    val handle = createSavedStateHandle()
    // You can send any custom parameter, repository, etc. to your ViewModel.
    SavedStateViewModel(handle, "custom_value")
}
// The handle and parameter are now available from the ViewModel
viewModel.handle
viewModel.value
```

| Parameters |
|---|---|
| `viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }` | The scope that the created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` should be associated with. |
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | The key to use to identify the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |
| `noinline initializer: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.() -> VM` | lambda used to create an instance of the ViewModel class |

| Returns |
|---|---|
| `VM` | A `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` that is an instance of the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1)` type. |

### viewModel

Cmn Artifact: [androidx.lifecycle:lifecycle-viewmodel-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/compose/ViewModel.kt+function:viewModel)

```
@Composable
inline fun <VM : ViewModel> viewModel(
    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
            "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
        },
    key: String? = null,
    factory: ViewModelProvider.Factory? = null,
    extras: CreationExtras = viewModelStoreOwner.defaultViewModelCreationExtras
): VM
```

Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the given owner (usually, a fragment or an activity), defaulting to the owner provided by `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner`.

The created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is associated with the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` and will be retained as long as the owner is alive (e.g. if it is an activity, until it is finished or process is killed).

If default arguments are provided via the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`, they will be available to the appropriate factory when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is created.

```kotlin
import androidx.compose.runtime.remember
import androidx.core.os.bundleOf
import androidx.lifecycle.DEFAULT_ARGS_KEY
import androidx.lifecycle.HasDefaultViewModelProviderFactory
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.MutableCreationExtras
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import androidx.lifecycle.viewmodel.compose.viewModel

val owner = LocalViewModelStoreOwner.current
val defaultExtras =
    (owner as? HasDefaultViewModelProviderFactory)?.defaultViewModelCreationExtras
        ?: CreationExtras.Empty
// Custom extras should always be added on top of the default extras
val extras = MutableCreationExtras(defaultExtras)
extras[DEFAULT_ARGS_KEY] =
    @Suppress("DEPRECATION") // bundleOf is deprecated
    bundleOf("test" to "my_value")
// This factory is normally created separately and passed in
val customFactory = remember {
    object : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            val args = extras[DEFAULT_ARGS_KEY]?.getString("test")
            @Suppress("UNCHECKED_CAST")
            // TestViewModel is a basic ViewModel that sets a String variable
            return TestViewModel(args) as T
        }
    }
}
// Create a ViewModel using the custom factory passing in the custom extras
val viewModel = customFactory.create(TestViewModel::class.java, extras)
// The value from the extras is now available in the ViewModel
viewModel.args
```

| Parameters |
|---|---|
| `viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }` | The owner of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` that controls the scope and lifetime of the returned `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. Defaults to using `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner`. |
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | The key to use to identify the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |
| `factory: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory? = null` | The `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory` that should be used to create the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or null if you would like to use the default factory from the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner` |
| `extras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras = viewModelStoreOwner.defaultViewModelCreationExtras` | The default extras used to create the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |

| Returns |
|---|---|
| `VM` | A `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` that is an instance of the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` type. |

### viewModel

android Artifact: [androidx.lifecycle:lifecycle-viewmodel-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/compose/ViewModel.android.kt+function:viewModel) Added in [2.5.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.5.0)

```
@Composable
fun <VM : ViewModel> viewModel(
    modelClass: Class<VM>,
    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
            "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
        },
    key: String? = null,
    factory: ViewModelProvider.Factory? = null,
    extras: CreationExtras = viewModelStoreOwner.defaultViewModelCreationExtras
): VM
```

Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the scope (usually, a fragment or an activity)

The created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is associated with the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(java.lang.Class,androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` and will be retained as long as the scope is alive (e.g. if it is an activity, until it is finished or process is killed).

If default arguments are provided via the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`, they will be available to the appropriate factory when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is created.

```kotlin
import androidx.compose.runtime.remember
import androidx.core.os.bundleOf
import androidx.lifecycle.DEFAULT_ARGS_KEY
import androidx.lifecycle.HasDefaultViewModelProviderFactory
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.MutableCreationExtras
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import androidx.lifecycle.viewmodel.compose.viewModel

val owner = LocalViewModelStoreOwner.current
val defaultExtras =
    (owner as? HasDefaultViewModelProviderFactory)?.defaultViewModelCreationExtras
        ?: CreationExtras.Empty
// Custom extras should always be added on top of the default extras
val extras = MutableCreationExtras(defaultExtras)
extras[DEFAULT_ARGS_KEY] =
    @Suppress("DEPRECATION") // bundleOf is deprecated
    bundleOf("test" to "my_value")
// This factory is normally created separately and passed in
val customFactory = remember {
    object : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            val args = extras[DEFAULT_ARGS_KEY]?.getString("test")
            @Suppress("UNCHECKED_CAST")
            // TestViewModel is a basic ViewModel that sets a String variable
            return TestViewModel(args) as T
        }
    }
}
// Create a ViewModel using the custom factory passing in the custom extras
val viewModel = customFactory.create(TestViewModel::class.java, extras)
// The value from the extras is now available in the ViewModel
viewModel.args
```

| Parameters |
|---|---|
| `modelClass: https://developer.android.com/reference/java/lang/Class.html<VM>` | The class of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` to create an instance of it if it is not present. |
| `viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }` | The scope that the created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` should be associated with. |
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | The key to use to identify the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |
| `factory: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory? = null` | The `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory` that should be used to create the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or null if you would like to use the default factory from the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner` |
| `extras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras = viewModelStoreOwner.defaultViewModelCreationExtras` | The default extras used to create the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |

| Returns |
|---|---|
| `VM` | A `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` that is an instance of the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(java.lang.Class,androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` type. |

### viewModel

Cmn Artifact: [androidx.lifecycle:lifecycle-viewmodel-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/compose/ViewModel.kt+function:viewModel) Added in [2.8.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.8.0)

```
@Composable
fun <VM : ViewModel> viewModel(
    modelClass: KClass<VM>,
    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
            "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
        },
    key: String? = null,
    factory: ViewModelProvider.Factory? = null,
    extras: CreationExtras = viewModelStoreOwner.defaultViewModelCreationExtras
): VM
```

Returns an existing `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or creates a new one in the scope (usually, a fragment or an activity)

The created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is associated with the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(kotlin.reflect.KClass,androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` and will be retained as long as the scope is alive (e.g. if it is an activity, until it is finished or process is killed).

If default arguments are provided via the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`, they will be available to the appropriate factory when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is created.

```kotlin
import androidx.compose.runtime.remember
import androidx.core.os.bundleOf
import androidx.lifecycle.DEFAULT_ARGS_KEY
import androidx.lifecycle.HasDefaultViewModelProviderFactory
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.MutableCreationExtras
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import androidx.lifecycle.viewmodel.compose.viewModel

val owner = LocalViewModelStoreOwner.current
val defaultExtras =
    (owner as? HasDefaultViewModelProviderFactory)?.defaultViewModelCreationExtras
        ?: CreationExtras.Empty
// Custom extras should always be added on top of the default extras
val extras = MutableCreationExtras(defaultExtras)
extras[DEFAULT_ARGS_KEY] =
    @Suppress("DEPRECATION") // bundleOf is deprecated
    bundleOf("test" to "my_value")
// This factory is normally created separately and passed in
val customFactory = remember {
    object : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            val args = extras[DEFAULT_ARGS_KEY]?.getString("test")
            @Suppress("UNCHECKED_CAST")
            // TestViewModel is a basic ViewModel that sets a String variable
            return TestViewModel(args) as T
        }
    }
}
// Create a ViewModel using the custom factory passing in the custom extras
val viewModel = customFactory.create(TestViewModel::class.java, extras)
// The value from the extras is now available in the ViewModel
viewModel.args
```

| Parameters |
|---|---|
| `modelClass: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<VM>` | The class of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` to create an instance of it if it is not present. |
| `viewModelStoreOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }` | The scope that the created `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` should be associated with. |
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | The key to use to identify the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |
| `factory: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory? = null` | The `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory` that should be used to create the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` or null if you would like to use the default factory from the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner` |
| `extras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras = viewModelStoreOwner.defaultViewModelCreationExtras` | The default extras used to create the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`. |

| Returns |
|---|---|
| `VM` | A `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` that is an instance of the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/compose/package-summary#viewModel(kotlin.reflect.KClass,androidx.lifecycle.ViewModelStoreOwner,kotlin.String,androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` type. |