在Flutter中,我有一个带有textformfield的表单。
在textFormField中,我有一个验证器:
Use Website
Use Website
我有一个带有“关闭”和“按下”按钮的弹出表单。当表单为空并且我按下按钮验证触发器时。一旦我在按钮关闭后立即按下关闭按钮,当我再次打开表单时,我会看到此验证文本为红色,当表单关闭时,如何清除我的验证。
答案 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((){});
关闭按钮的方法。