【发布时间】:2021-05-01 10:27:16
【问题描述】:
我创建了一个flutter登录/注册屏幕,如果firebase返回错误,我想给出一个错误:
if (formState.validate()) {
formState.save();
try {
UserCredential userCredential = await FirebaseAuth.instance
.signInWithEmailAndPassword(email: email, password: password);
User user = userCredential.user;
Navigator.popAndPushNamed(context, HomeScreen.routeName);
} catch (e) {
print(e.message);
print("failded with error code ${e.code}");
//catch if user not found
if (e.code == "user-not-found") {
setState(() {
//set true to update validator
wrongEmailOrPassword = true;
print("Error caught");
});
}
//catch if password wrong
if (e.code == "wrong-password") {
setState(() {
//set true to update validator
wrongEmailOrPassword = true;
print("Error caught");
});
}
}
}
通过将布尔值设置为 true,您想更新输入验证器,使其返回错误:
validator: (value) {
if (value.isEmpty) {
return (kPassNullError);
}
if (wrongEmailOrPassword) {
return (kWrongEmailOrPassword);
}
return null;
},
但它不起作用并且不会更新验证器/错误消息。如果我重新加载表单,它只会更新它。按下提交按钮后如何更新错误信息?
感谢您阅读长文:)
【问题讨论】:
标签: flutter validation dart setstate