Ответ
CompositionLocal — это механизм в Jetpack Compose для неявной передачи данных через дерево композиции без явной передачи параметров через каждый компонент.
Пример:
val LocalTheme = compositionLocalOf { LightTheme }
@Composable
fun App() {
CompositionLocalProvider(LocalTheme provides DarkTheme) {
// Дочерние компоненты могут получить тему через LocalTheme.current
ChildComponent()
}
}
@Composable
fun ChildComponent() {
val theme = LocalTheme.current // DarkTheme
Text("Current theme: $theme")
}
Когда использовать:
- Для глобальных данных (темы, локализация, конфигурация).
- Чтобы избежать "пробрасывания" параметров через множество компонентов.
Осторожно: Злоупотребление может усложнить понимание кода, так как зависимости становятся неявными.