Составные вызовы могут происходить только из контекста функции @Composable

У меня есть компонуемая функция, которую мне нужно вызвать после нажатия кнопки, но она продолжает показывать ошибку, что компонуемые функции не могут быть выполнены нажатием кнопки, может ли кто-нибудь помочь мне решить эту проблему. Спасибо.

  • это мой код
  Box(contentAlignment = Alignment.Center) {
               Button(onClick = {
                    // This is a composable function that i need to call
                    SignUpNewUser(email,fullName,country,password)
                }
                ,modifier = Modifier
                       .width(200.dp)
                       .background(color = Color.DarkGray)) {
                Text(text = "Sign Up",style = TextStyle(color = Color.White,fontWeight = FontWeight.Bold))
            }
        }
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить @Composable представление только к другому @Composable представлению.

onClick не отмечен @Composable, поэтому вы получаете это предупреждение. Вы можете изменить состояние только с помощью onClick.

Например, вы можете создать флаг и отображать пользовательский интерфейс в зависимости от этого флага:

var signUp by remember { mutableStateOf(false) }
if (signUp) {
    SignUpNewUser(email, fullName, country, password)
} else {
    Box(contentAlignment = Alignment.Center) {
        Button(onClick = {
            signUp = true
        }, modifier = Modifier
            .width(200.dp)
            .background(color = Color.DarkGray)) {
            Text(text = "Sign Up", style = TextStyle(color = Color.White, fontWeight = FontWeight.Bold))
        }
    }
}

Я предлагаю вам начать с это видео на ютубе, в котором объясняются основные принципы использования состояния в компоновке. Вы можете продолжить углублять свои знания с помощью состояния в Compose документация.

Другой вариант — использовать Создать навигацию.

Другие вопросы по теме