Validation 验证颤振中的问题Textformfield
我想创建一个注册表,但我得到一个错误如下。类型表单元素可以工作,但当buildMail处于活动状态时,我用buildName创建的小部件验证无法工作 编辑:它总共验证7个Textformfield,但当超过7个Textformfield时,它不会检查更多,验证是否有Textformfield编号限制Validation 验证颤振中的问题Textformfield,validation,flutter,dart,textformfield,Validation,Flutter,Dart,Textformfield,我想创建一个注册表,但我得到一个错误如下。类型表单元素可以工作,但当buildMail处于活动状态时,我用buildName创建的小部件验证无法工作 编辑:它总共验证7个Textformfield,但当超过7个Textformfield时,它不会检查更多,验证是否有Textformfield编号限制 类RegisterForm扩展StatefulWidget{ @凌驾 _RegisterPerformState createState()=>\u RegisterPerformState(
类RegisterForm扩展StatefulWidget{
@凌驾
_RegisterPerformState createState()=>\u RegisterPerformState();
}
类_RegisterFormState扩展状态{
final _formkey=GlobalKey();
TextEditingController name控制器=TextEditingController();
TextEditingController=TextEditingController();
TextEditingController用户名控制器=TextEditingController();
TextEditingController密码控制器=TextEditingController();
TextEditingController密码控制器2=TextEditingController();
TextEditingController电话控制器=TextEditingController();
TextEditingController电话控制器2=TextEditingController();
TextEditingController电话控制器3=TextEditingController();
TextEditingController城市代码控制器=TextEditingController();
TextEditingController epostaController=TextEditingController();
int genderInt;
bool-hatirlaDeger=false;
Widget buildName(){
返回TextFormField(
控制器:名称控制器,
装饰:输入装饰(
前缀:图标(图标。短文本),
标签文字:“广告”,
helperText:“”,
fillColor:Colors.red,
边框:大纲输入边框(
边界半径:边界半径。圆形(10),
borderSide:borderSide(),
),
),
键盘类型:TextInputType.text,
验证器:(值){
if(value.isEmpty){
返回“Bu alan boşbırakılamaz”;
}else if(value.length<2){
返回“Ad alanıen az 2 karakterli olmalıdır”;
}否则如果(value.length>15){
返回“Ad alanıen fazla 15 karakterli olabilir”;
}
},
);
}
Widget buildSurame(){
返回TextFormField(
控制员:控制员,,
装饰:输入装饰(
前缀:图标(图标。短文本),
标签文字:“大豆”,
helperText:“”,
fillColor:Colors.red,
边框:大纲输入边框(
边界半径:边界半径。圆形(10),
borderSide:borderSide(),
),
),
键盘类型:TextInputType.text,
验证器:(值){
if(value.isEmpty){
返回“Bu alan boşbırakılamaz”;
}else if(value.length<2){
返回“Soyad alanıen az 2 karakterli olmalıdır”;
}否则如果(value.length>15){
返回“Soyad alanıen fazla 15 karakterli olabilir”;
}
},
);
}
//Widget buildMail(){
//返回TextFormField(
//控制器:epostaController,
//装饰:输入装饰(
//前缀:图标(Icons.mail),
//labelText:“电子邮件”,
//helperText:“”,
//fillColor:Colors.red,
//边框:大纲输入边框(
//边界半径:边界半径。圆形(10),
//borderSide:borderSide(),
// ),
// ),
//键盘类型:TextInputType.text,
//验证器:(值){
//如果(value.length==2){
//返回“测试”;
// }
// },
// );
// }
Widget buildUsername(){
返回TextFormField(
控制器:userNameController,
装饰:输入装饰(
前缀:图标(图标。短文本),
标签文字:“KullanıcıAdı”,
helperText:“”,
fillColor:Colors.red,
边框:大纲输入边框(
边界半径:边界半径。圆形(10),
borderSide:borderSide(),
),
),
键盘类型:TextInputType.text,
验证器:(值){
if(value.isEmpty){
返回“Bu alan boşbırakılamaz”;
}else if(value.length<4){
返回“Kullanıc adıalanıen az 4 karakterli olmalıdır”;
}否则如果(value.length>15){
返回“Kullanıc adıalanıen fazla 15 karakterli olabilir”;
}
},
);
}
Widget buildPassWord(){
返回TextFormField(
控制器:密码控制器,
装饰:输入装饰(
前缀:图标(图标。短文本),
标签文字:“帕罗拉”,
helperText:“”,
fillColor:Colors.red,
边框:大纲输入边框(
边界半径:边界半径。圆形(10),
borderSide:borderSide(),
),
),
蒙昧文字:对,
键盘类型:TextInputType.visiblePassword,
验证器:(值){
if(value.isEmpty){
返回“Bu alan boşbırakılamaz”;
}else if(value.length<6){
返回“Parola alanıen az 6 karakterli olmalıdır”;
}
},
);
}
Widget buildConfirmPassWord(){
返回TextFormField(
控制器:密码控制器2,
装饰:输入装饰(
前缀:图标(图标。短文本),
labelText:“帕罗拉·多奥鲁拉马”,
helperText:“”,
fillColor:Colors.red,
边框:大纲输入边框(
边界半径:边界半径。圆形(10),
borderSide:borderSide(),
),
),
蒙昧文字:对,
键盘类型:TextInputType.visiblePassword,
验证器:(值){
if(passWordController2.text!=passWordController.text){
返回“Parolar eşleşmiyor”;
}
},
);
}
Widget buildPhone(){
返回TextFormField(
控制器:电话控制器,
装饰:输入装饰(
前缀:图标(图标。短文本),
labelText:“Telefon”,
helperText:“”,
fillColor:Colors.red,
边框:大纲输入边框(
边界半径:BorderRad
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,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Soyad",
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 "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,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Kullanıcı 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 < 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,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Parola",
helperText: "",
fillColor: Colors.red,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(),
),
),
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,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Parola Doğrulama",
helperText: "",
fillColor: Colors.red,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(),
),
),
obscureText: true,
keyboardType: TextInputType.visiblePassword,
validator: (value) {
if (passWordController2.text != passWordController.text) {
return "Parolalar eşleşmiyor";
}
},
);
}
Widget buildPhone() {
return TextFormField(
controller: phoneController,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Telefon",
helperText: "",
fillColor: Colors.red,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(),
),
),
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,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Telefon2",
helperText: "",
fillColor: Colors.red,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(),
),
),
keyboardType: TextInputType.number,
validator: (value) {
if (value.length != 30) {
return "Telefon alanı 10 karakterli olmalıdır";
}
},
);
}
Widget buildPhone3() {
return TextFormField(
controller: phoneController3,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Telefon3",
helperText: "",
fillColor: Colors.red,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(),
),
),
keyboardType: TextInputType.number,
validator: (value) {
if (value.length != 30) {
return "Telefon alanı 10 karakterli olmalıdır";
}
},
);
}
Widget buildCityCode() {
return TextFormField(
controller: cityCodeController,
decoration: InputDecoration(
prefixIcon: Icon(Icons.short_text),
labelText: "Plaka",
helperText: "",
fillColor: Colors.red,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(),
),
),
keyboardType: TextInputType.number,
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ç",
style: TextStyle(color: Colors.white),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
side: BorderSide(color: Colors.transparent)),
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(),
],
),
);
}
}