
[英]Flutter: capture the future of the 2nd page after PushReplacement
[英]Validation triggered only after clicking for the 2nd time
我还是新手。 我正在尝试创建一个注册表单。 目前,我在验证Firestore中是否已经存在用户名时陷入困境。 我设法创建了功能,并且效果很好。 但是,当我尝试在验证器中实现该功能时,当我第一次单击它时,它不会显示错误。 仅当我第二次单击时,才会显示错误。 有人知道为什么吗? 以及我该如何解决?
Future<bool> _checkIfUsernameExists(String username) async {
final QuerySnapshot result = await Firestore.instance
.collection('users')
.where('username', isEqualTo: username)
.limit(1)
.getDocuments();
final List<DocumentSnapshot> documents = result.documents;
return documents.length == 1;
}
bool _userExist = false;
_checkUserValue<bool>(String user) {
_checkIfUsernameExists(user).then((val) {
if (val) {
print("Username already exists");
_userExist = val;
} else {
print("Username is available");
_userExist = val;
}
});
return _userExist;
}
//username textbox
final _username = Container(
child: TextFormField(
decoration: InputDecoration(labelText: username),
validator: (input) =>
_checkUserValue(input) ? msg_username_exists : null,
onSaved: (input) => _stringUsername = input.toLowerCase().trim(),
),
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.