提交后有什么方法可以禁用Form清除TextFormField吗?我用两个TextFormField(电子邮件和密码)创建了一个简单的登录表单,该表单登录到Firebase。由于验证器功能,我选择了表格。除了使用错误的凭据提交表单之外,所有方法都很好,那么所有TextFormFields都为空,我必须重新输入一次,这样虽然可以输入密码,但是对电子邮件却很奇怪
这是代码
class LoginScreen extends StatelessWidget {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
String _email;
String _password;
final Status status = Provider.of<UserRepository>(context).status;
void submitForm() {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
try {
Provider.of<UserRepository>(context, listen: false)
.signIn(_email, _password, context);
} catch (e) {
print(e);
}
}
return Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Form(
key: _formKey,
child: ListView(
children: <Widget>[
SizedBox(
height: 30,
),
TextFormField(
initialValue: _email,
keyboardType: TextInputType.emailAddress,
autofocus: true,
decoration: kTextFieldDecoration.copyWith(hintText: 'Email'),
validator: emailValidator,
onSaved: (value) {
_email = value.trim();
},
),
SizedBox(
height: 15,
),
TextFormField(
obscureText: true,
decoration:
kTextFieldDecoration.copyWith(hintText: 'Password'),
onSaved: (value) {
_password = value.trim();
}),
SizedBox(
height: 10,
),
RoundedButton(
title: 'Login',
color: Colors.lightBlueAccent,
onPressed: () {
submitForm();
},
),
],
),
),
我尝试使用_email变量初始化电子邮件字段,但即使提交后该变量也为null。我在文档中到处都看过,但是没有找到任何解决方案。提前致谢
使用StatefulWidget
。
因为在StatelessWidget
build方法中有很多原因被调用,例如(屏幕旋转,动画,滚动)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句