gpt4 book ai didi

firebase - flutter 异步验证表单

转载 作者:IT老高 更新时间:2023-10-28 12:44:09 29 4
gpt4 key购买 nike

new TextFormField(
validator: (value) async{
if (value.isEmpty) {
return 'Username is required.';
}
if (await checkUser()) {
return 'Username is already taken.';
}
},
controller: userNameController,
decoration: InputDecoration(hintText: 'Username'),
),

我有一个用户表单,我想检查用户是否已经存在于 firestore 数据库中。

Future checkUser() async {
var user = await Firestore.instance
.collection('users')
.document(userNameController.text)
.get();
return user.exists;

}

这是我检查用户文档是否已存在于数据库中的功能。但是验证器给了我这个错误。

[dart] The argument type '(String) → Future' can't be assigned to the parameter type '(String) → String'.

我应该如何解决这个问题?

最佳答案

此时我认为你不能将 Future 关联到 validator

您可以做的是通过单击按钮或以其他方式验证数据并设置验证器响应变量的状态。

 @override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
body: Form(
key: _formKey,
child: Column(children: [
new TextFormField(
validator: (value) {
return usernameValidator;
},
decoration: InputDecoration(hintText: 'Username')),
RaisedButton(
onPressed: () async {
var response = await checkUser();

setState(() {
this.usernameValidator = response;
});

if (_formKey.currentState.validate()) {}
},
child: Text('Submit'),
)
])));
}

关于firebase - flutter 异步验证表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012285/

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