[英]Asynchronous validation with Flutter Form
我是 Flutter 的新手。 在我的应用程序中,当用户键入并从文本框中移出焦点时,我需要从数据库中检查用户名是否已存在或不异步的选项。
validator
需要String
返回类型,这就是为什么我不能添加Future<String>
我如何使用 Flutter TextFormField
执行如下操作? 或任何完全满足我要求的过程。
validator: myValidator
Future myValidator(String username) async{
return await checkUser(username);
}
注意:目前 Flutter 不支持validator
的 async 功能。 你可以用一种棘手的方式做到这一点。
定义这些变量
dynamic _validationMsg;
final _usernameCtrl = TextEditingController();
您的异步验证器功能(经过修改)
Future myValidator(String username) async{
_validationMsg = null;
setState(() {});
bool isExist = await checkUser(username);
if(isExist){
_validationMsg = "${username} already taken";
setState(() {});
}
}
现在添加用Focus
小部件包装的TextFormField
小部件。
Focus(
child: TextFormField(
controller: _usernameCtrl,
autovalidateMode: AutovalidateMode.onUserInteraction,
validator: (val) => _validationMsg,
),
onFocusChange: (hasFocus) {
if (!hasFocus) myValidator(_usernameCtrl.text);
}
)
代码参考: https : //flutter-tutorial.com/flutter-async-validation
你可以尝试这样的事情:
validator: (username) async {
String result = await checkUser(username);
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.