Skip to content

Commit ffea2c4

Browse files
committed
Feat: Adding match function to validate of two values dose match or not
1 parent 93b2970 commit ffea2c4

27 files changed

+88
-1
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ Checks if value is correct IPv6 address.
110110

111111
Checks if value is correct url address.
112112

113+
### `.match(String otherValue, [String message])`
114+
115+
Checks if the value matches the specified `otherValue`. This can be used to validate if two input values are identical.
116+
113117
### `.regExp(RegExp regExp, String message)`
114118

115119
Validates if value does matches `regExp` or not.

example/lib/main.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class _HomePageState extends State<HomePage> {
2121
GlobalKey<FormState> _form = GlobalKey<FormState>();
2222

2323
void _validate() {
24-
_form.currentState.validate();
24+
_form.currentState?.validate();
2525
}
2626

2727
@override

lib/src/i18n/ar.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocaleAr implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => 'يرجى إدخال عنوان URL صحيح';
34+
35+
@override
36+
String noMatch() => 'يرجى إدخال قيم متطابقة';
3437
}

lib/src/i18n/az.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleAz implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'URL ünvanı düzgün deyil';
32+
33+
@override
34+
String noMatch() => 'Dəyərlər uyğun gəlmir';
3235
}

lib/src/i18n/bn.dart

+3
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ class LocaleBn implements FormValidatorLocale {
3030

3131
@override
3232
String url(String v) => 'এটি একটি বৈধ URL ঠিকানা নয়';
33+
34+
@override
35+
String noMatch() => 'মানগুলি মেলেনি';
3336
}

lib/src/i18n/ca_es.dart

+3
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,7 @@ class LocaleCaEs implements FormValidatorLocale {
3232

3333
@override
3434
String url(String v) => 'El camp no és una adreça URL vàlida';
35+
36+
@override
37+
String noMatch() => 'Els valors no coincideixen';
3538
}

lib/src/i18n/de.dart

+3
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ class LocaleDe implements FormValidatorLocale {
3030

3131
@override
3232
String url(String v) => 'Dies ist keine gültige URL';
33+
34+
@override
35+
String noMatch() => 'Die Werte stimmen nicht überein';
3336
}

lib/src/i18n/en.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocaleEn implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => 'The field is not a valid URL address';
34+
35+
@override
36+
String noMatch() => 'The values do not match';
3437
}

lib/src/i18n/es.dart

+3
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,7 @@ class LocaleEs implements FormValidatorLocale {
3232

3333
@override
3434
String url(String v) => 'El campo no es una dirección URL válida';
35+
36+
@override
37+
String noMatch() => 'Los valores no coinciden';
3538
}

lib/src/i18n/fr.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocaleFr implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => "Le champ n'est pas une URL valide";
34+
35+
@override
36+
String noMatch() => "Los valores no coinciden";
3437
}

lib/src/i18n/he.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleHe implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'השדה מכיל כתובת URL לא תקינה';
32+
33+
@override
34+
String noMatch() => "הערכים אינם תואמים";
3235
}

lib/src/i18n/id.dart

+3
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ class LocaleId implements FormValidatorLocale {
3030

3131
@override
3232
String url(String v) => 'Masukan bukan alamat URL yang benar';
33+
34+
@override
35+
String noMatch() => "Nilai tidak cocok";
3336
}

lib/src/i18n/it.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocaleIt implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => 'Il campo non è un indirizzo URL valido';
34+
35+
@override
36+
String noMatch() => "I valori non corrispondono";
3437
}

lib/src/i18n/ja.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleJa implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => '有効なURLの形式ではありません';
32+
33+
@override
34+
String noMatch() => "値が一致しません";
3235
}

lib/src/i18n/ko.dart

+3
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ class LocaleKo implements FormValidatorLocale {
2121
String ipv6(String v) => '올바른 IPv6주소를 입력해주세요';
2222
@override
2323
String url(String v) => '올바른 URL주소를 입력해주세요';
24+
25+
@override
26+
String noMatch() => "값이 일치하지 않습니다";
2427
}

lib/src/i18n/nl.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleNl implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'Ongeldige URL';
32+
33+
@override
34+
String noMatch() => "De waarden komen niet overeen";
3235
}

lib/src/i18n/pl.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocalePl implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'adres URL jest niepoprawny';
32+
33+
@override
34+
String noMatch() => "Wartości nie pasują do siebie";
3235
}

lib/src/i18n/pt_br.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocalePtBr implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => 'A URL informada não é valida';
34+
35+
@override
36+
String noMatch() => 'Os valores não correspondem';
3437
}

lib/src/i18n/ro.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocaleRo implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => 'Câmpul nu este o adresă URL validă';
34+
35+
@override
36+
String noMatch() => 'Valorile nu se potrivesc';
3437
}

lib/src/i18n/ru.dart

+3
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ class LocaleRu implements FormValidatorLocale {
3131

3232
@override
3333
String url(String v) => 'Неверный URL адрес';
34+
35+
@override
36+
String noMatch() => 'Значения не совпадают';
3437
}

lib/src/i18n/th.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleTh implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'ที่อยู่ URL ไม่ถูกต้อง';
32+
33+
@override
34+
String noMatch() => 'ค่าไม่ตรงกัน';
3235
}

lib/src/i18n/tr.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleTr implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'URL adresi geçerli değil';
32+
33+
@override
34+
String noMatch() => 'Değerler eşleşmiyor';
3235
}

lib/src/i18n/vi.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleVi implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => 'Địa chỉ URL không hợp lệ';
32+
33+
@override
34+
String noMatch() => 'Giá trị không khớp';
3235
}

lib/src/i18n/zh_cn.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@ class LocaleZhCN implements FormValidatorLocale {
2929

3030
@override
3131
String url(String v) => '此字段不是一个有效的统一资源定位器(URL)地址';
32+
33+
@override
34+
String noMatch() => '值不匹配';
3235
}

lib/src/locale.dart

+1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ abstract class FormValidatorLocale {
88
String ip(String v);
99
String ipv6(String v);
1010
String url(String v);
11+
String noMatch();
1112
}

lib/src/validator_builder.dart

+4
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ class ValidationBuilder {
112112
ValidationBuilder required([String? message]) =>
113113
add((v) => v == null || v.isEmpty ? message ?? _locale.required() : null);
114114

115+
/// Checks if two values match
116+
ValidationBuilder match(String? otherValue, [String? message]) =>
117+
add((v) => v == otherValue ? null : message ?? _locale.noMatch());
118+
115119
/// Value length must be greater than or equal to [minLength]
116120
ValidationBuilder minLength(int minLength, [String? message]) =>
117121
add((v) => v!.length < minLength

test/validation_test.dart

+12
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,16 @@ void main() {
163163
'abaabababababaababfaba',
164164
]);
165165
});
166+
167+
test('validate match', () {
168+
final validate =
169+
ValidationBuilder().match('password123', 'Values do not match').build();
170+
171+
checkValidation(validate, validValues: [
172+
'password123',
173+
], invalidValues: [
174+
'wrongpassword',
175+
'pass123',
176+
]);
177+
});
166178
}

0 commit comments

Comments
 (0)