我是jetpack合成的新手。谁能告诉我创建公共合成函数是正确的吗?公共函数
@Composable
fun commonTextFiled(
hint: String,
icon: ImageVector,
keyboardType: KeyboardType = KeyboardType.Text,
imeAction: ImeAction = ImeAction.Done,
trailingIcon: Boolean = false
): String {
var textOfEditText by rememberSaveable { mutableStateOf("") }
var toggleClick by rememberSaveable { mutableStateOf(false) }
TextField(
value = textOfEditText,
onValueChange = { textOfEditText = it },
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp),
keyboardOptions = KeyboardOptions(
KeyboardCapitalization.Characters,
autoCorrect = false,
keyboardType = keyboardType, imeAction
),
placeholder = { Text(text = hint) },
visualTransformation = if (toggleClick) VisualTransformation.None else PasswordVisualTransformation()
,leadingIcon = { Icon(icon, contentDescription = null) },
trailingIcon = {
if (trailingIcon) {
val image: Int = if (toggleClick) {
R.drawable.visibil
} else {
R.drawable.visibility_off
}
IconButton(onClick = { toggleClick =!toggleClick }) {
Icon(painter = painterResource(id = image), contentDescription = null)
}
}
},
singleLine = true
)
return textOfEditText
}
调用常用函数------------------
var email by rememberSaveable { mutableStateOf("") }
var password by rememberSaveable { mutableStateOf("") }
Spacer(modifier = modifier.padding(vertical = 10.dp))
email = commonTextFiled(hint = "Enter Your Email", icon = Icons.Filled.Email)
Spacer(modifier = modifier.padding(vertical = 10.dp))
password = commonTextFiled("password", Icons.Filled.Lock, trailingIcon = true)
我很困惑这样创建和调用组合函数是正确还是错误的。提前感谢。
1条答案
按热度按时间dluptydi1#
当然可以。你可以创建可重用的组合函数。
该函数不返回任何内容。生成UI的合成函数不需要返回任何内容,因为它们描述所需的屏幕状态,而不是构造UI小部件。有关详细信息,请参阅this。
您可以将回调传递给可组合对象,而不是返回字符串。