Можно ли вызывать @Composable функцию из обычной функции

«Можно ли вызывать @Composable функцию из обычной функции» — вопрос из категории Jetpack Compose, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, Composable-функции можно вызывать только из других Composable-функций или из контекста Composition (например, внутри setContent {}). Обычные функции не имеют доступа к Composition API, необходимому для работы Composable-функций.

Если нужно вызвать логику из обычной функции, лучше вынести эту логику в обычную функцию без аннотации @Composable:

// Так нельзя!
fun regularFunction() {
    MyComposable() // Ошибка компиляции
}

// Правильный подход:
fun sharedLogic() { /* общая логика */ }

@Composable
fun MyComposable() {
    sharedLogic() // Можно вызывать обычную функцию из Composable
}