Flutter异步表单验证

4
我跟这个问题的发帖者遇到了相同的问题:flutter validate form asynchronously
不过,我在实现上遇到了一些麻烦,也不太理解这个验证是如何工作的。
首先,这段代码返回什么?它返回一个布尔值吗?
Future checkUser() async {
var user = await Firestore.instance
    .collection('users')
    .document(userNameController.text)
    .get();
return user.exists;

第二,这种情况下的userNameValidator是什么?它是一个布尔值吗?
new TextFormField(
              validator: (value) {
                return usernameValidator;
              },

Thanks, for the help.


checkUser() returns Future<bool> - Andrii Turkovskyi
1个回答

2
方法checkUser将开始调用Firebase。关键字await告诉编译器我们需要该调用的输出,但无需阻止其他所有操作。调用完成后,该函数将返回一个布尔值,指示给定用户是否存在。
在另一个问题中,checkUser通过onPressed调用,等待返回值并将其分配给usernameValidator变量,从而使其成为布尔值。

非常感谢您的帮助,Zroq。问题在于上面编写的验证器会抛出一个错误:“返回类型bool不是匿名闭包定义的字符串”。有任何想法是什么原因引起的吗? - PJQuakJag
我认为我的问题实际上是你如何初始化userNameValidator?在CheckUser函数之后,它是如何设置为true或false的? - PJQuakJag
在 State 子类定义完成后应将变量初始化为 false。就像此示例中的 _isFavorited 变量 - https://flutter.io/tutorials/interactive/#step-3 - Zroq
谢谢你,我意识到我没有正确使用控制器来验证文本。对于这些东西,我仍然感觉像个新手,但非常感谢你的帮助! - PJQuakJag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接