인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Sean Choi님의 프로필 이미지
Sean Choi

작성한 질문수

Flutter로 SNS 앱 만들기

가입완료 메시지 표시 / 회원 가입중일 경우, 입력 항목 비활성화

회원가입 버튼을 누른 후 validation 문제

해결된 질문

작성

·

227

1

영상 마지막에 고쳐주신

setState(() {

_isEnabled = false;

_autovalidateMode = AutovalidateMode.always;

});

위치를 바꾸어주어서 그 전에 null 로 return 하는 조건문 때문에 autovalidateMode.always 가 적용되지 않는 것 같습니다.

조언 부탁드립니다.

답변 1

0

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

말씀하신 내용이 맞습니다.
제가 실수했네요.

 

ElevatedButton(
  onPressed: _isEnabled
	  ? () async {
		  final form = _globalKey.currentState;

		  if (form == null || !form.validate()) {
			return;
		  }

		  setState(() {
			_isEnabled = false;
			_autovalidateMode = AutovalidateMode.always;
		  });

영상 마지막 부분에 setState 함수를 if 문 아래로 이동했기 때문에
if 문에서 유효성 체크를 통과하지 않으면 return 에서 로직이 끝나게 됩니다. 그래서
_autovalidateMode = AutovalidateMode.always;
코드가 실행되지 않습니다.

 

수정된 코드 입니다.

ElevatedButton(
  onPressed: _isEnabled
	  ? () async {
		  final form = _globalKey.currentState;

		  setState(() {
			_autovalidateMode = AutovalidateMode.always;
		  });
		  
		  if (form == null || !form.validate()) {
			return;
		  }

		  setState(() {
			_isEnabled = false;
		  });

회원가입 버튼을 클릭하면
_autovalidateMode = AutovalidateMode.always;
코드를 실행 후, 유효성 체크를 하도록 수정했습니다.

Sean Choi님의 프로필 이미지
Sean Choi
질문자

빠른 답변 감사드립니다!!

Sean Choi님의 프로필 이미지
Sean Choi

작성한 질문수

질문하기