Chr*_*ong 3 asynchronous dart firebase flutter google-cloud-firestore
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'),
),
Run Code Online (Sandbox Code Playgroud)
我有一个供用户使用的表单,我想检查用户在Firestore的日期数据库中是否已经存在。
Future checkUser() async {
var user = await Firestore.instance
.collection('users')
.document(userNameController.text)
.get();
return user.exists;
Run Code Online (Sandbox Code Playgroud)
}
这是我检查用户文档是否已存在于数据库中的功能。但是验证器给了我这个错误。
[dart]参数类型'(String)?无法将Future分配给参数类型'(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'),
)
])));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |