Ответ
LocalContext.current — это CompositionLocal, предоставляющий доступ к текущему контексту в Compose.
Как работает:
- Хранится в CompositionLocalProvider, который оборачивает дерево композиции.
- При чтении
currentищет ближайший предоставленный контекст вверх по дереву. - По умолчанию Android добавляет контекст Activity в корне Compose через
AndroidViewBinding.
Нюансы:
- Если контекст не предоставлен — будет исключение.
- В тестах нужно мокать через
CompositionLocalProvider(LocalContext provides testContext).
Пример:
@Composable
fun MyComponent() {
val context = LocalContext.current
Button(onClick = {
Toast.makeText(context, "Clicked", Toast.LENGTH_SHORT).show()
}) {
Text("Show Toast")
}
}