일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DART
- androidx
- 오픈소스
- recyclerview
- 이모지메모
- 이모지
- 파이썬
- 소울칼리버6
- FSM
- Freesound
- 명언모음
- 넷플릭스
- 명심보감
- ASMR
- Linux
- Firebase
- 1인개발자
- 공자명언
- 공부집중
- Android
- Streaming
- Flutter
- Coroutine
- 벤자민플랭클린
- 좋은글필사하기
- kotlin
- 코틀린
- bash
- 장자명언
- jetpack compose
Archives
- Today
- Total
Vintage appMaker의 Tech Blog
[Dart] 입력값 Validate를 위한 예제 본문
앱을 만들다보면 "개인정보 입력" 또는 "다양한 신청화면"을 구현해야 할 때가 있다. 이럴 경우, 입력된 값들이 유효한지 채크해야 하는 것이 필수인데 화면이 복잡할 수록 검증코드가 지저분해지게 된다. 이 때, Validate 관련 모듈을 만들면 유용하게 사용할 수 있다. 다음은 예제이다.
class ValidatorDSL {
List<Function> errors = [];
ValidatorDSL isNotEmpty(String value, Function errorMessage) {
if (value.isEmpty) {
errors.add(errorMessage);
}
return this;
}
ValidatorDSL isEmail(String value, Function errorMessage) {
if (value.isEmpty) return this;
final emailRegex = RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$');
if (!emailRegex.hasMatch(value)) {
errors.add(errorMessage);
}
return this;
}
ValidatorDSL isMinLength(String value, int minLength, Function errorMessage) {
if (value.length < minLength) {
errors.add(errorMessage);
}
return this;
}
ValidatorDSL isMaxLength(String value, int maxLength, Function errorMessage) {
if (value.length > maxLength) {
errors.add(errorMessage);
}
return this;
}
void validate({Function? onError, Function? onSuccess}) {
if (errors.isEmpty == false) {
errors.forEach((fnErr) {
fnErr();
});
if (onError != null) onError();
} else {
if (onSuccess != null) onSuccess();
}
}
}
// 사용 예제
void testValidate() {
// test값
final email1 = '';
final passwd1 = '12345';
final email2 = 'google@adsloader.co.kr';
final passwd2 = '123456890123dfsdfds';
ValidatorDSL()
// email1, passwd1 검증
..isNotEmpty(email1, () {
print("email1이 비었습니다.");
})
..isNotEmpty(passwd1, () {
print("passwd1 비밀번호가 비었습니다.");
})
..isEmail(email1, () {
print("email1이 유효하지 않습니다.");
})
..isMinLength(passwd1, 6, () {
print("passwd1 비번의 글자수가 적습니다.");
})
..isMaxLength(passwd1, 12, () {
print("passwd1 글자수가 많습니다.");
})
// email2, passwd2 검증
..isNotEmpty(email2, () {
print("emaili2 비었습니다.");
})
..isNotEmpty(passwd2, () {
print("passwd2 비밀번호가 비었습니다.");
})
..isEmail(email2, () {
print("email2이 유효하지 않습니다.");
})
..isMinLength(passwd2, 6, () {
print("passwd2 비번의 글자수가 적습니다.");
})
..isMaxLength(passwd2, 12, () {
print("passwd2의 글자수가 많습니다.");
})
..validate(onError: () {
print("😣 정보의 유효성에 문제가 있습니다.");
}, onSuccess: () {
print("😀 입력된 정보의 유효성에 문제가 없습니다. ");
});
}
결과화면은 다음과 같다.
email1이 비었습니다.
passwd1 비번의 글자수가 적습니다.
passwd2의 글자수가 많습니다.
😣 정보의 유효성에 문제가 있습니다.
'Source code or Tip > Flutter & Dart' 카테고리의 다른 글
[Flutter] eval과 같은 동적 소스(코드) 처리 (0) | 2024.05.04 |
---|---|
[Flutter] dart로 opml 파싱 (1) | 2023.10.31 |
[Flutter ]Error: Dart library 'dart:ui' is not available on this platform (0) | 2023.10.21 |
chatGPT의 Open API를 이용한 플러그인 (0) | 2023.03.19 |
Flutter Timer로 스프레쉬 화면에서 메인으로 이동 - pushReplacement (0) | 2023.03.09 |
Comments