if-statement - Flutter firebase 电子邮件/密码错误处理无法正确检查空白字段
问题描述
你好 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
andpassword
字符串)然后删除了他输入的内容,那么字符串将不是null
,它们将等于空字符串""
,这与null
. 因此,您的控制流将直接跳到else
您那里的最后一个,这不是您想要的。
考虑添加检查何时email.isEmpty
或何时password.isEmpty
捕获这些事件,或首先初始化您的email
和password
字符串""
。这样您就可以确保它们不会是null
,并且您只需在代码中替换email == null
byemail.isEmpty
和password == null
by password.isEmpty
,一切都会正常工作。
推荐阅读
- python-3.x - 如何从斯坦福 NLTK 解析树中提取动词短语
- dart - ViewPostImeInputStage ACTION_DOWN 颤动
- python-3.x - 重新采样后尝试返回索引列表
- html - 有没有办法在 Shadow-DOM 中访问 CSS 中的 HTML 标签属性?
- php - 如何使用页面模型获取表单字段集?
- android - SensorManager requestTriggerSensor 返回 false
- javascript - 使用扩展语法具有两个定义的调用方法
- django - 如何在 Django 表单中使用 TimeInput 小部件?
- sparql - !a 在 SPARQL 中是什么意思?
- google-cloud-firestore - 参数不可分配给 CollectionReference 错误。完全遵循 AngularFire2 文档