我有 1 个带有 2 个 TextFormField、firstName 和 lastName 的表单。我需要使用条件和正则表达式验证这两个数据,然后使用 Navigator 将数据传递到第二页。
问题是,我希望 lastName 是可选的或者可以为空。但我无法删除验证器,因为我仍然需要将它与正则表达式或其他人一起使用。
TextEditingController firstName = TextEditingController();
TextEditingController lastName = TextEditingController();
GlobalKey<FormState> _key = GlobalKey();
bool _validate = false;
String first, last;
Form(
key: _key,
autovalidate: _validate,
child: Column(children: [
InputName(
controller: firstName,
placeholder: 'Nama depan',
validator: validateFirstName,
onSaved: (String val) {
first = val;
},
),
InputName(
controller: lastName,
placeholder: 'Nama belakang',
validator: validateLastName,
onSaved: (String val) {
last = val;
},
),
]),
),
Button(
text: 'Lanjut mengisi Email',
onPressed: () {
if (_key.currentState.validate()) {
_key.currentState.save();
String a = firstName.text.capitalize();
String b = lastName.text.capitalize();
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation1, animation2) =>
Regist2Page([a, b]),
transitionDuration: Duration(seconds: 0),
),
);
} else {
setState(() {
_validate = true;
});
}
},
),
String validateLastName(String value) {
if (value.isNotEmpty) {
if (value.length > 20) {
return 'Maksimal 20 karakter';
}
return null;
}
return null;
}