Defines annotations that will be used by packaged validator_generator
to build class validator.
Annotation Values
Class
ClassValidator // Annotation in class level
Field Member
String
These are example supported annotation for string member :
IsStringValidator
IsNotEmptyStringValidator
IsEmptyStringValidator
MinStringLengthValidator
MaxStringLengthValidator
Numeric
These are example supported annotation for numeric member :
IsZeroValidator
IsNegativeNumberValidator
IsPostiveNumberValidator
Usages
Install
dart pub get validator_annotation
dart pub get --dev validator_generator
Example
Define a class, let say UserModel
with file name user_model.dart
. Then annotated UserModel
with ClassValidator
:
import 'package:validator_annotation/validator_annotation.dart';
part 'user_model.validator.dart';
@ClassValidator(
// Stop validating the rest of instance members.
// Only get the first error
stopWhenFirstError: false,
// Naming convention on each validator function
namingConvention: NamingConvention.snackCase,
)
class UserModel {
// apply not empty rule on email field
@IsNotEmptyStringValidator()
// apply email rule on email field
@IsEmailValidator(
// customize field name
// when null it will take declaration name
fieldName: 'email',
// customize error message
errorMessage: 'is not email',
)
// `validator_generator` will generate `validate_email` function,
// to validate this field.
// Take a look on example.validator.dart
final String email;
@IsNotEmptyStringValidator()
final String password;
const UserModel({
required this.email,
required this.password,
});
}
Run validator_generator
to generate validator class
dart pub run build_runner build
The validator_generator
creates the corresponding part user_model.validator.dart
:
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: non_constant_identifier_names
part of 'user_model.dart';
// **************************************************************************
// ValidatorModelGenerator
// **************************************************************************
class UserModelValidator {
static String? validate_email(String value) {
final validatorAnnotations = [
const IsNotEmptyStringValidator(),
const IsEmailValidator(fieldName: 'email', errorMessage: 'is not email')
];
return validateField(
value,
validatorAnnotations,
);
}
static String? validate_password(String value) {
final validatorAnnotations = [const IsNotEmptyStringValidator()];
return validateField(
value,
validatorAnnotations,
);
}
static ValidationResult validate(UserModel instance) {
// validation data
final validationDatas = [
ValidationData(
instanceMemberSymbol: 'email',
valueToValidate: instance.email,
annotations: [
const IsNotEmptyStringValidator(),
const IsEmailValidator(
fieldName: 'email', errorMessage: 'is not email')
],
),
ValidationData(
instanceMemberSymbol: 'password',
valueToValidate: instance.password,
annotations: [const IsNotEmptyStringValidator()],
)
];
// validator options
const stopWhenFirstError = false;
return validateInstance(
validationDatas,
stopWhenFirstError: stopWhenFirstError,
);
}
}
Libraries
- annotations/annotations
- annotations/base_validator_annotation
- annotations/class_validator
- annotations/numeric_annotations/is_negative_number_validator
- annotations/numeric_annotations/is_positive_number_validator
- annotations/numeric_annotations/is_zero_validator
- annotations/numeric_annotations/max_value_number_validator
- annotations/numeric_annotations/min_max_value_number_validator
- annotations/numeric_annotations/min_value_number_validator
- annotations/numeric_annotations/numeric_metadatas
- annotations/object_validator
- annotations/string_annotations/is_alphabet_validator
- annotations/string_annotations/is_email_validator
- annotations/string_annotations/is_empty_string_validator
- annotations/string_annotations/is_not_empty_string_validator
- annotations/string_annotations/is_string_number_validator
- annotations/string_annotations/is_string_validator
- annotations/string_annotations/max_string_length_validator
- annotations/string_annotations/min_max_string_length_validator
- annotations/string_annotations/min_string_length_validator
- annotations/string_annotations/string_metadatas
- utils/classes/classes
- utils/classes/validation_data
- utils/classes/validation_error
- utils/classes/validation_result
- utils/extensions/exception_extension
- utils/extensions/extensions
- utils/extensions/string_extension
- utils/functions/assert_nullable_string
- utils/functions/assert_numeric
- utils/functions/convert_to_num
- utils/functions/functions
- utils/utils
- utils/validation/numeric_validation/numeric_validation
- utils/validation/numeric_validation/validate_is_negative
- utils/validation/numeric_validation/validate_is_not_negative
- utils/validation/numeric_validation/validate_is_not_positive
- utils/validation/numeric_validation/validate_is_not_zero
- utils/validation/numeric_validation/validate_is_positive
- utils/validation/numeric_validation/validate_min_max_value
- utils/validation/string_validation/string_validation
- utils/validation/string_validation/validate_is_alphabet
- utils/validation/string_validation/validate_is_email
- utils/validation/string_validation/validate_is_empty
- utils/validation/string_validation/validate_is_string_number
- utils/validation/string_validation/validate_string_length
- utils/validation/validate_field
- utils/validation/validate_instance
- utils/validation/validation
- validator_annotation
- Provides validator annotation classes to use with