Flutter firebase email/password 错误处理未正确检查空白字段
Flutter firebase email/password error handling doesn't check blank fields properly
你好 Flutter 新手!我已经设置了登录和错误检查部分。
我想对字段进行一些检查,但我意识到如果用户执行以下行为,我的错误检查代码将不起作用:
- 在电子邮件文本字段中输入一些文本
- 在密码文本字段中输入一些文本
- 退格删除电子邮件文本字段中的文本
- 点击平面按钮提交
代码将通过 if 检查并继续登录...
但我想既然我点击按钮时电子邮件文本字段是空的,它应该仍然遵循 if 检查?
提前致谢!
FlatButton(
onPressed: () async {
if (password == null && email == null) {
print('empty sign in info');
setState(() {
alertText = 'You have not entered your login info!';
});
} else if (password == null) {
setState(() {
alertText = 'Password cannot be blank!';
});
} else if (email == null) {
setState(() {
alertText = 'Email cannot be blank!';
});
} else {
setState(() {
showSpinner = true;
});
try {
final newUser = await _auth.signInWithEmailAndPassword(
email: email, password: password);
if (newUser != null) {
Navigator.pushNamed(context, ViewScreen.id);
}
} catch (e) {
print(e);
}
}
},
看起来当用户甚至没有点击用户名或密码文本字段时,email
和 password
字符串为空。但是如果用户输入了一些东西(因此改变了 email
和 password
字符串)然后删除了他输入的内容,那么这些字符串就不会是 null
,它们将等于空字符串""
,不同于null
。因此,您的控制流将直接跳到您那里的最后一个 else
,这不是您想要的。
考虑在 email.isEmpty
或 password.isEmpty
时添加检查以捕获这些事件,或者将 email
和 password
字符串初始化为 ""
第一名。通过这种方式,您可以确保它们不会是 null
,并且您只需在代码和所有内容中将 email == null
替换为 email.isEmpty
并将 password == null
替换为 password.isEmpty
应该可以正常工作。
你好 Flutter 新手!我已经设置了登录和错误检查部分。
我想对字段进行一些检查,但我意识到如果用户执行以下行为,我的错误检查代码将不起作用:
- 在电子邮件文本字段中输入一些文本
- 在密码文本字段中输入一些文本
- 退格删除电子邮件文本字段中的文本
- 点击平面按钮提交
代码将通过 if 检查并继续登录... 但我想既然我点击按钮时电子邮件文本字段是空的,它应该仍然遵循 if 检查?
提前致谢!
FlatButton(
onPressed: () async {
if (password == null && email == null) {
print('empty sign in info');
setState(() {
alertText = 'You have not entered your login info!';
});
} else if (password == null) {
setState(() {
alertText = 'Password cannot be blank!';
});
} else if (email == null) {
setState(() {
alertText = 'Email cannot be blank!';
});
} else {
setState(() {
showSpinner = true;
});
try {
final newUser = await _auth.signInWithEmailAndPassword(
email: email, password: password);
if (newUser != null) {
Navigator.pushNamed(context, ViewScreen.id);
}
} catch (e) {
print(e);
}
}
},
看起来当用户甚至没有点击用户名或密码文本字段时,email
和 password
字符串为空。但是如果用户输入了一些东西(因此改变了 email
和 password
字符串)然后删除了他输入的内容,那么这些字符串就不会是 null
,它们将等于空字符串""
,不同于null
。因此,您的控制流将直接跳到您那里的最后一个 else
,这不是您想要的。
考虑在 email.isEmpty
或 password.isEmpty
时添加检查以捕获这些事件,或者将 email
和 password
字符串初始化为 ""
第一名。通过这种方式,您可以确保它们不会是 null
,并且您只需在代码和所有内容中将 email == null
替换为 email.isEmpty
并将 password == null
替换为 password.isEmpty
应该可以正常工作。