表单关闭时如何删除验证

时间:2019-08-14 05:43:10

标签: flutter

在Flutter中,我有一个带有textformfield的表单。
在textFormField中,我有一个验证器:

Use Website
Use Website

我有一个带有“关闭”和“按下”按钮的弹出表单。当表单为空并且我按下按钮验证触发器时。一旦我在按钮关闭后立即按下关闭按钮,当我再次打开表单时,我会看到此验证文本为红色,当表单关闭时,如何清除我的验证。

2 个答案:

答案 0 :(得分:0)

您可以像这样解决它:

final _textKey = GlobalKey<FormState>();
final TextEditingController _controller = TextEditingController();

Widget _getPhoneInputForm() {
  final RegExp _phoneRegex = RegExp(r"^\+{1}\d{10,17}");
  bool isError = false;
  bool isButtonPressed = false;

  return Column(
    children: <Widget>[
      Padding(
        padding: EdgeInsets.symmetric(horizontal: 36.0),
        child: Form(
          key: _textKey,
          child: TextFormField(
            controller: _controller,
            validator: (str) {
              if (!isButtonPressed) {
                return null;
              }
              isError = true;
              if (str.isEmpty) {
                return err_empty_field;
              } else if (!_phoneRegex.hasMatch(str)) {
                return err_invalid_phone;
              }
              isError = false;
            },
            onFieldSubmitted: (str) {
              if (_textKey.currentState.validate()) _Login();
            },
          ),
          onChanged: () {
            isButtonPressed = false;
            if (isError) {
              _textKey.currentState.validate();
            }
          },
        ),
      ),
      RaisedButton(
        onPressed: () {
          isButtonPressed = true;
          if (_textKey.currentState.validate()) _Login();
        },
        child: Text(login),
      )
    ],
  );
}

答案 1 :(得分:0)

尝试添加

setState((){});

关闭按钮的方法。