Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@

## 8.4.0

- Refactor l10n generator. Thanks [@ipcjs]()
- Refactor l10n generator. Thanks [@ipcjs](https://github.com/ipcjs)
- Add property to allow empty on equalLength validator. Thanks [@CircleCurve](https://github.com/CircleCurve)
- Add support for more languages
- Czech. Thanks [@edlman](https://github.com/flutter-form-builder-ecosystem/form_builder_validators/pull/3)
Expand Down
12 changes: 7 additions & 5 deletions lib/src/core/equal_validator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ class EqualValidator<T> extends TranslatedValidator<T> {
/// The value to compare against.
final Object value;

Object? get _resolvedValue =>
value is Function ? (value as Function)() : value;

@override
String get translatedErrorText =>
FormBuilderLocalizations.current.equalErrorText(value.toString());
String get translatedErrorText => FormBuilderLocalizations.current
.equalErrorText(_resolvedValue?.toString() ?? '');

@override
String? validateValue(T valueCandidate) {
return valueCandidate != value ? errorText : null;
}
String? validateValue(T valueCandidate) =>
valueCandidate != _resolvedValue ? errorText : null;
}
12 changes: 7 additions & 5 deletions lib/src/core/not_equal_validator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ class NotEqualValidator<T> extends TranslatedValidator<T> {
/// The value to compare against.
final Object value;

Object? get _resolvedValue =>
value is Function ? (value as Function)() : value;

@override
String get translatedErrorText =>
FormBuilderLocalizations.current.notEqualErrorText(value.toString());
String get translatedErrorText => FormBuilderLocalizations.current
.notEqualErrorText(_resolvedValue?.toString() ?? '');

@override
String? validateValue(T valueCandidate) {
return valueCandidate == value ? errorText : null;
}
String? validateValue(T valueCandidate) =>
valueCandidate == _resolvedValue ? errorText : null;
}
20 changes: 20 additions & 0 deletions test/src/core/equal_validator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -172,5 +172,25 @@ void main() {
expect(result, customErrorMessage);
},
);

test('should support dynamic function callbacks for comparison value', () {
// Arrange
String dynamicTarget = 'initial';
final EqualValidator<String> validator = EqualValidator<String>(
() => dynamicTarget,
errorText: customErrorMessage,
);

// Act & Assert 1: Matches initial
expect(validator.validate('initial'), isNull);
expect(validator.validate('changed'), customErrorMessage);

// Act: Update dynamicTarget
dynamicTarget = 'changed';

// Act & Assert 2: Now matches changed, not initial
expect(validator.validate('changed'), isNull);
expect(validator.validate('initial'), customErrorMessage);
});
});
}
20 changes: 20 additions & 0 deletions test/src/core/not_equal_validator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -180,5 +180,25 @@ void main() {
);
},
);

test('should support dynamic function callbacks for comparison value', () {
// Arrange
String dynamicTarget = 'initial';
final NotEqualValidator<String> validator = NotEqualValidator<String>(
() => dynamicTarget,
errorText: customErrorMessage,
);

// Act & Assert 1: Fails matching initial
expect(validator.validate('initial'), customErrorMessage);
expect(validator.validate('changed'), isNull);

// Act: Update dynamicTarget
dynamicTarget = 'changed';

// Act & Assert 2: Now fails matching changed, not initial
expect(validator.validate('changed'), customErrorMessage);
expect(validator.validate('initial'), isNull);
});
});
}
Loading