如何保存表单密钥


onPressed: () async {
_emailTaken = false;
if (!_formKey.currentState.validate()) {
return;
}
setState(() {
app.loading = true;
});
await isRegister(emailController.value.text);
if (_emailTaken) {
setState(() {
app.loading = false;
});
_formKey.currentState.validate();
return;
}
}

这是一段检查我的用户的电子邮件是否已经注册的文章。

但我遇到了

未处理的异常:NoSuchMethodError:方法"validate"是在null上调用的。

这是我的电子邮件TextForm的验证器

validator: (String value) {
if (value.isEmpty) return '*1';
if (!value.contains('@')) return '*2';
if (_emailTaken) return '*3';
return null;
}

和我的isRegister((方法

Future<void> isRegister(String email) async {
await fireStore.collection('Users').doc(email).get().then((DocumentSnapshot ds) {
_emailTaken = ds.exists;
});
}

这是整体结构。

class _SignInWidgetState extends State<SignInWidget> {
...
final _formKey = GlobalKey<FormState>();
final app = AppState(false, null);
...
isVerified(String email, String pass) async {
...
}
@override
Widget build(BuildContext context) {
...
}
Future<void> Login(String email,String pass) async{
...
}
Future<void> isRegister(String name) async {
...
}
Future<void> login(String email, String pass) async {
...
}
Widget _logIn() {
return GestureDetector(
...
child: Form(
key: _formKey,
child: Column(
children: <Widget>[
...
SignInButtonBuilder(
onPressed: () async {
emails = 0;
passs = 0;
_isVerified = true;
if (!_formKey.currentState.validate()) return;
setState(() {
app.loading = true;
});
...
setState(() {
app.loading = false;
});
_formKey.currentState.validate();
},
),
...

在"in the second"中有一个错误_formKey.currentState.validate(("底部的部分。

错误未处理异常:NoSuchMethodError:方法"validate"是在null上调用的。

在定义formKey的地方,还应该实例化它,比如:

var _formKey = GlobalKey<FormState>();

你做了吗?

相关内容

  • 没有找到相关文章

最新更新