gpt4 book ai didi

firebase - 表单字段输入的 Flutter firebase 验证

转载 作者:IT王子 更新时间:2023-10-29 06:43:57 26 4
gpt4 key购买 nike

我是 Flutter 和 Firebase 的新手,我正在尝试验证来自表单的用户输入并针对 Firebase 集合运行它。

我要求用户创建一个用户名,并想验证我的 Firebase 目录中是否没有现有的用户名。

我从关于 Check if Field Already exists in Flutter Firestore 的讨论中得到了这个验证方法.我想为该方法提供一个名称,构建一个具有该名称的文档列表,并确认不存在。

  Future<bool> doesNameAlreadyExist(String name) async {
final QuerySnapshot result = await Firestore.instance
.collection('user')
.where('user_id', isEqualTo: name)
.limit(1)
.getDocuments();
final List<DocumentSnapshot> documents = result.documents;
return documents.length == 1;
}

我希望能够像下面所做的那样在文本表单域的验证器中调用此方法。

new TextFormField(
decoration: new InputDecoration(labelText: 'Username'),
validator: (value) => doesNameAlreadyExist(value) ? "Username already taken" : null,
onSaved: (value) => _username = value,
),

但是,这会抛出一个错误,我必须为验证器设置一个静态类型的 bool。

我的问题:我如何 (1) 创建一个能够搜索 Firebase 的静态 bool 方法或 (2) 我如何通过异步调用获得相同的功能(理想情况下,无需构建另一个小部件)?

最佳答案

future 给 then() 方法,你可以使用 That。您可以将验证器方法修改为:

validator: (value) => checkUserValue(value) ? "Username already taken" : null,


bool _userExist = false;
checkUserValue<bool>(String user) {
_doesEmailAlreadyExist(user).then((val){
if(val){
print ("UserName Already Exits");
_userExist = val;
}
else{
print ("UserName is Available");
_userExist = val;
}
});
return _userExist;
}

关于firebase - 表单字段输入的 Flutter firebase 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52584520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com