Slide 36
Slide 36 text
@Model
class LoginState(var username: String, var password: String) {
val valid: Boolean
get() = username.isNotEmpty() && password.isNotEmpty()
}
@Composable
fun LoginScreen(onClick: () -> Unit) {
val model = +memo { LoginState() }
EditText(
text=model.username,
onTextChange={ text -> model.username = text }
)
EditText(
text=model.password,
onTextChange={ text -> model.password = text }
)
Button(text="Login", enabled=model.valid, onClick={ onClick() })
}