提交后禁用表格清除TextFormField

孤独的狼

提交后有什么方法可以禁用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

因为在StatelessWidgetbuild方法中有很多原因被调用,例如(屏幕旋转,动画,滚动)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章