LoginScreen() is my composable function and i am trying to use a textfield inside it which takes email data from my viewmodel.Everytime my email values changes, LoginScreen function is recomposed and reinitialises my viewModel which results in no change in my textfield. I am wondering why is this happening and how to fix it.
@Composable
fun LoginScreen(navController: NavHostController
){
var viewModel=LoginScreenViewModel(navController = navController, LocalContext.current)
Column(
modifier = Modifier
.fillMaxSize()
.background(primary)
.verticalScroll(rememberScrollState())
){
TextField(value = viewModel.emailText
, onValueChange = {
viewModel.emailText=it
Log.i("Email text",viewModel.emailText)
},
placeholder = {
Text("Email")
},
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email
),
modifier = Modifier
.fillMaxWidth()
.padding(top = 10.dp)
)
}
}
class LoginScreenViewModel():ViewModel() {
var emailText by mutableStateOf("a")
var passwordText by mutableStateOf("")
var isVisibilityOn by mutableStateOf(false)
lateinit var mAuth:FirebaseAuth
private lateinit var navController: NavHostController
private lateinit var context: Context
constructor(navController: NavHostController,context:Context) : this() {
this.navController=navController
this.context=context
}
}