我是颤振新手。在我的应用程序中,当用户键入并从文本框中聚焦时,我需要选择检查用户名是否已存在或是否从数据库异步检查。
需要返回类型validator,String这就是我无法添加的原因Future<String>
我怎样才能用 Flutter 做如下事情TextFormField?或任何完全满足我的要求的过程。
validator: myValidator
Run Code Online (Sandbox Code Playgroud)
Future myValidator(String username) async{
return await checkUser(username);
}
Run Code Online (Sandbox Code Playgroud)
注意:目前Flutter不支持validator. 你可以用一种棘手的方式来做到这一点。
定义这些变量
dynamic _validationMsg;
final _usernameCtrl = TextEditingController();
Run Code Online (Sandbox Code Playgroud)
您的异步验证器函数(经过修改)
Future myValidator(String username) async{
_validationMsg = null;
setState(() {});
bool isExist = await checkUser(username);
if(isExist){
_validationMsg = "${username} already taken";
setState(() {});
}
}
Run Code Online (Sandbox Code Playgroud)
现在添加TextFormField用小部件包裹的小Focus部件。
Focus(
child: TextFormField(
controller: _usernameCtrl,
autovalidateMode: AutovalidateMode.onUserInteraction,
validator: (val) => _validationMsg,
),
onFocusChange: (hasFocus) {
if (!hasFocus) myValidator(_usernameCtrl.text);
}
)
Run Code Online (Sandbox Code Playgroud)
代码参考: https: //flutter-tutorial.com/flutter-async-validation
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |