У меня есть компонуемая функция, которую мне нужно вызвать после нажатия кнопки, но она продолжает показывать ошибку, что компонуемые функции не могут быть выполнены нажатием кнопки, может ли кто-нибудь помочь мне решить эту проблему. Спасибо.
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))
}
}
Вы можете добавить @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 документация.
Другой вариант — использовать Создать навигацию.