问题描述
我想创建一个注册表,但是出现如下错误。类型表单元素有效,但是当buildMail处于活动状态时,我使用buildName创建的小部件验证不起作用。
编辑:它最多可以验证7个Textformfield,但是当有7个以上Textformfield时,它不会检查更多内容,是否有Textformfield数量限制供验证?
class RegisterForm extends StatefulWidget {
@override
_RegisterFormState createState() => _RegisterFormState();
}
class _RegisterFormState extends State<RegisterForm> {
final _formkey = GlobalKey<FormState>();
TextEditingController nameController = TextEditingController();
TextEditingController surNameController = TextEditingController();
TextEditingController userNameController = TextEditingController();
TextEditingController passWordController = TextEditingController();
TextEditingController passWordController2 = TextEditingController();
TextEditingController phoneController = TextEditingController();
TextEditingController phoneController2 = TextEditingController();
TextEditingController phoneController3 = TextEditingController();
TextEditingController cityCodeController = TextEditingController();
TextEditingController epostaController = TextEditingController();
int genderInt;
bool hatirlaDeger = false;
Widget buildName() {
return TextFormField(
controller: nameController,decoration: Inputdecoration(
prefixIcon: Icon(Icons.short_text),labelText: "Ad",helperText: "",fillColor: Colors.red,border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),borderSide: BorderSide(),),keyboardType: TextInputType.text,validator: (value) {
if (value.isEmpty) {
return "Bu alan boş bırakılamaz";
} else if (value.length < 2) {
return "Ad alanı en az 2 karakterli olmalıdır";
} else if (value.length > 15) {
return "Ad alanı en fazla 15 karakterli olabilir";
}
},);
}
Widget buildSurame() {
return TextFormField(
controller: surNameController,labelText: "Soyad",validator: (value) {
if (value.isEmpty) {
return "Bu alan boş bırakılamaz";
} else if (value.length < 2) {
return "Soyad alanı en az 2 karakterli olmalıdır";
} else if (value.length > 15) {
return "Soyad alanı en fazla 15 karakterli olabilir";
}
},);
}
// Widget buildMail() {
// return TextFormField(
// controller: epostaController,// decoration: Inputdecoration(
// prefixIcon: Icon(Icons.mail),// labelText: "E-Mail",// helperText: "",// fillColor: Colors.red,// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(10),// borderSide: BorderSide(),// ),// ),// keyboardType: TextInputType.text,// validator: (value) {
// if (value.length == 2) {
// return "test";
// }
// },// );
// }
Widget buildUsername() {
return TextFormField(
controller: userNameController,labelText: "Kullanıcı Adı",validator: (value) {
if (value.isEmpty) {
return "Bu alan boş bırakılamaz";
} else if (value.length < 4) {
return "Kullanıc adı alanı en az 4 karakterli olmalıdır";
} else if (value.length > 15) {
return "Kullanıc adı alanı en fazla 15 karakterli olabilir";
}
},);
}
Widget buildPassWord() {
return TextFormField(
controller: passWordController,labelText: "Parola",obscureText: true,keyboardType: TextInputType.visiblePassword,validator: (value) {
if (value.isEmpty) {
return "Bu alan boş bırakılamaz";
} else if (value.length < 6) {
return "Parola alanı en az 6 karakterli olmalıdır";
}
},);
}
Widget buildConfirmPassWord() {
return TextFormField(
controller: passWordController2,labelText: "Parola Doğrulama",validator: (value) {
if (passWordController2.text != passWordController.text) {
return "Parolalar eşleşmiyor";
}
},);
}
Widget buildPhone() {
return TextFormField(
controller: phoneController,labelText: "Telefon",keyboardType: TextInputType.number,validator: (value) {
if (value.length != 10) {
return "Telefon alanı 10 karakterli olmalıdır";
}
if (value[0] == "0") {
return "0 ile başlayamaz";
}
},);
}
Widget buildPhone2() {
return TextFormField(
controller: phoneController2,labelText: "Telefon2",validator: (value) {
if (value.length != 30) {
return "Telefon alanı 10 karakterli olmalıdır";
}
},);
}
Widget buildPhone3() {
return TextFormField(
controller: phoneController3,labelText: "Telefon3",);
}
Widget buildCityCode() {
return TextFormField(
controller: cityCodeController,labelText: "Plaka",validator: (value) {
if (value.length != 2) {
return "Plaka alanı 2 karakterli olmalıdır";
}
if (int.parse(value) < 1 || int.parse(value) > 81) {
return "Plaka kodu geçerli değil";
}
},);
}
Widget genderPick() {
return GenderPickerWithImage(
maleText: "Erkek",femaleText: "Kadın",isCircular: true,showOtherGender: false,verticalAlignedText: false,equallyAligned: false,animationDuration: Duration(milliseconds: 300),opacityOfGradient: 0.4,padding: const EdgeInsets.all(5),size: MediaQuery.of(context).size.aspectRatio * 120,selectedGender: Gender.Female,selectedGenderTextStyle:
TextStyle(color: Color(0xFF8b32a8),fontWeight: FontWeight.bold),unSelectedGenderTextStyle:
TextStyle(color: Colors.white,fontWeight: FontWeight.normal),onChanged: (Gender gender) {
if (gender == Gender.Female) {
genderInt = 0;
} else {
genderInt = 1;
}
},);
}
Widget datePick() {
return Container(
height: 100,child: CupertinoDatePicker(
minimumYear: 1900,maximumYear: DateTime.Now().year - 12,mode: CupertinoDatePickerMode.date,initialDateTime: DateTime(DateTime.Now().year - 12),onDateTimeChanged: (DateTime newDateTime) {},);
}
Widget accept() {
return Row(
children: [
CheckBox(
activeColor: Colors.orange,value: hatirlaDeger,checkColor: Colors.white,onChanged: (checkDeger) {
setState(() {
hatirlaDeger = checkDeger;
});
},GestureDetector(
child: Text(
"Kullanım Koşullarını Kabul Ediyorum",style:
TextStyle(fontSize: MediaQuery.of(context).size.width * 0.031),],);
}
Widget regButton() {
return Row(
children: <Widget>[
Expanded(
child: RaisedButton(
child: Text(
"Kayıt Ol",style: TextStyle(color: Colors.white),color: Colors.Amber,shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),side: BorderSide(color: Colors.transparent)),onpressed: () {
if (_formkey.currentState.validate()) {
print("Doğru");
} else {
print("Yanlış");
}
},);
}
Widget cancelButton() {
return Row(
children: <Widget>[
Expanded(
child: RaisedButton(
color: Colors.blue,child: Text(
"Vazgeç",onpressed: () {
Navigator.popAndPushNamed(context,"/");
},);
}
@override
Widget build(BuildContext context) {
return Form(
// autovalidate: true,key: _formkey,child: ListView(
children: [
buildName(),buildSurame(),buildUsername(),buildPassWord(),buildConfirmPassWord(),buildPhone(),buildPhone2(),buildPhone3(),buildCityCode(),genderPick(),Divider(),datePick(),accept(),regButton(),cancelButton(),);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)