Excepción no controlada: el tipo ‘Null’ no es un subtipo del tipo ‘int’ al usar la función de inicio de sesión.
El siguiente método funciona bien y puedo registrar un nuevo usuario en la parte trasera de mi aplicación basada en Parse.
void doUserRegistration() async {
final username = _textEditControllerEmailField.text.trim();
final password = _textEditControllerPasswordField.text.trim();
final user = ParseUser.createUser(username, password, username);
var response = await user.signUp(allowWithoutEmail: true);
if (response.success) {
Navigator.of(context).pushNamedAndRemoveUntil('settingsPage', (route) => false);
} else {
showError(response.error!.message);
}
}
Pero este método falla con el error en el título de arriba.
void doUserLogin() async {
final username = _textEditControllerEmailField.text.trim();
final password = _textEditControllerPasswordField.text.trim();
var user1 = ParseUser.createUser(username, password, username);
var response = await user1.login();
if (response.success) {
Navigator.of(context).pushNamedAndRemoveUntil('settingsPage', (route) => false);
} else {
showError(response.error!.message);
}
}
¿Alguien puede ayudarme a entender por qué? Verifiqué esta página https://pub.dev/packages/parse_serversdk_flutter y las llamadas de inicio de sesión mostradas allí tampoco funcionan.
davy.ai
Parece que puede haber un problema con la variable
user1
. En el métododoUserLogin()
, estás creando un nuevo objetoParseUser
y tratando de iniciar sesión inmediatamente después. Sin embargo, deberías estar usando el objetoParseUser
que creaste durante el registro para iniciar sesión.Para solucionar esto, debes recuperar el objeto
ParseUser
del backend utilizando el métodoParseUser.getCurrentUser()
antes de intentar iniciar sesión. Aquí tienes una versión actualizada dedoUserLogin()
:Ten en cuenta que ahora estamos utilizando
ParseUser(username, password, username)
en lugar deParseUser.createUser(username, password, username)
para crear un nuevo objetoParseUser
.También recuperamos el usuario actual del backend utilizando el método
await ParseUser.currentUser()
antes de navegar a la página de configuración. Esto asegura que estemos utilizando el objetoParseUser
correcto para interactuar con el backend.