# ModifierLocal

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/modifier/ModifierLocal.kt+class:androidx.compose.ui.modifier.ModifierLocal) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.1.0) Common/All
- Cmn

  ```
  sealed class ModifierLocal<T : Any?>
  ```
Known direct subclasses [ProvidableModifierLocal](https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ProvidableModifierLocal)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ProvidableModifierLocal` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ProvidableModifierLocal`s are `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal`s that can be used to provide values using a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocalProvider`. |

*** ** * ** ***

`https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal`s provide a means of inter-modifier communication. When a modifier provides a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal`, it is available to modifiers on the right of the providing modifier for the current layout node. The provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal`s are also available to layout nodes that are children of the current layout node.

One must create a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal` instance, which can be referenced by consumers statically. `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal` instances themselves hold no data, and can be thought of as a type-safe identifier for the data being passed to other modifiers to the right of the providing modifier or down the tree. `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal` factory functions take a single parameter: a factory to create a default value in cases where a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal` is used without a Provider. If this is a situation you would rather not handle, you can throw an error in this factory.

To add a value that can be accessed by other modifiers, create an instance of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ProvidableModifierLocal` and add it to the tree by using a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/modifierLocalProvider.modifier#(androidx.compose.ui.Modifier).modifierLocalProvider(androidx.compose.ui.modifier.ProvidableModifierLocal,kotlin.Function0)`. Now other modifiers can access the provided value by using a `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/modifierLocalConsumer.modifier#(androidx.compose.ui.Modifier).modifierLocalConsumer(kotlin.Function1)`.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ProvidableModifierLocal` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/package-summary#modifierLocalOf(kotlin.Function0)` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/modifierLocalProvider.modifier#(androidx.compose.ui.Modifier).modifierLocalProvider(androidx.compose.ui.modifier.ProvidableModifierLocal,kotlin.Function0)` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/modifierLocalConsumer.modifier#(androidx.compose.ui.Modifier).modifierLocalConsumer(kotlin.Function1)` |   |

## Summary

| ### Protected constructors |
|---|---|
| `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ModifierLocal#ModifierLocal(kotlin.Function0)(defaultFactory: () -> T)` | Cmn |

## Protected constructors

### ModifierLocal

Cmn

```
protected <T : Any?> ModifierLocal(defaultFactory: () -> T)
```