Pub Package

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

More

Numeric

These are example supported annotation for numeric member :

IsZeroValidator
IsNegativeNumberValidator
IsPostiveNumberValidator

More

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