@@ -12,8 +12,42 @@ extension FormFieldValidatorExtensions<T> on FormFieldValidator<T> {
12
12
return FormBuilderValidators .or ([this , other]);
13
13
}
14
14
15
+ /// Combines the current validator with another validator using logical XOR.
16
+ FormFieldValidator <T > not () {
17
+ return FormBuilderValidators .notEqual (this );
18
+ }
19
+
15
20
/// Adds a condition to apply the validator only if the condition is met.
16
21
FormFieldValidator <T > when (bool Function (T value) condition) {
17
22
return FormBuilderValidators .conditional (condition, this );
18
23
}
24
+
25
+ /// Adds a condition to apply the validator only if the condition is not met.
26
+ FormFieldValidator <T > unless (bool Function (T value) condition) {
27
+ return FormBuilderValidators .conditional (
28
+ (value) => ! condition (value), this );
29
+ }
30
+
31
+ /// Transforms the value before applying the validator.
32
+ FormFieldValidator <T > transform (T Function (T ? value) transformer) {
33
+ return FormBuilderValidators .transform (this , transformer);
34
+ }
35
+
36
+ /// Skips the validator if the condition is met.
37
+ FormFieldValidator <T > skipWhen (bool Function (T ? value) condition) {
38
+ return FormBuilderValidators .skipWhen (condition, this );
39
+ }
40
+
41
+ /// Logs the value during the validation process.
42
+ FormFieldValidator <T > log ({String Function (T ? value)? log}) {
43
+ return FormBuilderValidators .log (log: log);
44
+ }
45
+
46
+ /// Overrides the error message of the current validator.
47
+ FormFieldValidator <T > withMessage (String errorMessage) {
48
+ return (valueCandidate) {
49
+ final result = this (valueCandidate);
50
+ return result != null ? errorMessage : null ;
51
+ };
52
+ }
19
53
}
0 commit comments