함께 공부하는 Flutter

[Flutter] Form에서 GlobalKey를 이용할 때 개별 항목의 validation 로직을 적용하는 방법

냥냥박사에디 2023. 5. 1. 22:31
반응형

GlobalKey를 사용하여 위젯을 제어할 때, validate() 메소드를 수정하려면 다음과 같은 방법을 사용할 수 있습니다.

  1. GlobalKey 객체를 생성합니다.
  2. final _formKey = GlobalKey<FormState>();
  3. 폼 위젯을 생성하고 GlobalKey를 지정합니다.
  4. Form( key: _formKey, ... )
  5. validate() 메소드를 호출하면, 폼 위젯의 유효성 검사를 수행합니다. 이때 validate() 메소드에 콜백 함수를 전달하여, 유효성 검사를 수정할 수 있습니다.
  6. void _submitForm() { if (_formKey.currentState!.validate()) { // 폼이 유효하면 제출 처리를 수행합니다. } } String? _validateEmail(String? value) { if (value == null || value.isEmpty) { return '이메일을 입력하세요.'; } if (!EmailValidator.validate(value)) { return '잘못된 이메일 형식입니다.'; } return null; } TextFormField( decoration: InputDecoration( labelText: '이메일', hintText: 'example@example.com', ), validator: _validateEmail, // 유효성 검사 함수를 지정합니다. )

위 코드에서 _validateEmail 함수는 이메일 주소가 유효한지 검사하고, 에러 메시지를 반환합니다. 이 함수를 TextFormFieldvalidator 프로퍼티에 지정하여, 해당 필드의 유효성 검사를 수정할 수 있습니다.

validate() 메소드는 모든 필드의 유효성 검사를 수행하므로, 각 필드마다 별도의 유효성 검사 함수를 작성하여 전달해주면 됩니다.

반응형