Validation 验证颤振中的问题Textformfield

Validation 验证颤振中的问题Textformfield,validation,flutter,dart,textformfield,Validation,Flutter,Dart,Textformfield,我想创建一个注册表,但我得到一个错误如下。类型表单元素可以工作,但当buildMail处于活动状态时,我用buildName创建的小部件验证无法工作 编辑:它总共验证7个Textformfield,但当超过7个Textformfield时,它不会检查更多,验证是否有Textformfield编号限制 类RegisterForm扩展StatefulWidget{ @凌驾 _RegisterPerformState createState()=>\u RegisterPerformState(

我想创建一个注册表,但我得到一个错误如下。类型表单元素可以工作,但当buildMail处于活动状态时,我用buildName创建的小部件验证无法工作

编辑:它总共验证7个Textformfield,但当超过7个Textformfield时,它不会检查更多,验证是否有Textformfield编号限制


类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(),
        ],
      ),
    );
  }
}