validation_queue 0.1.0 copy "validation_queue: ^0.1.0" to clipboard
validation_queue: ^0.1.0 copied to clipboard

Composable validation with const support. Queue validators with termination strategies and cross-field validation.

Validation Queue #

Composable validation system with const support for Flutter and Dart.

Chain validators with termination strategies, handle cross-field validation, and compose results. All with const constructors for zero runtime overhead.

Features #

  • Const validators: Define validation at compile-time
  • Composable queues: Chain multiple validations
  • Termination strategies: Control when validation stops
  • Cross-field validation: Validate based on other field values
  • UI framework agnostic: Returns UIPayload for any rendering layer

Installation #

dependencies:
  validation_queue: ^0.1.0

Usage #

Simple Validation #

const validation = Validation(
  validator: Validator.required(),
  failureMsg: Failure(SimpleText('This field is required')),
);

final result = validation.validate('', []);
// Returns: Failure(SimpleText('This field is required'))

Validation Queue #

const emailValidation = Validation.queue([
  Validation(
    validator: Validator.required(),
    failureMsg: Failure(SimpleText('Email required')),
  ),
  Validation(
    validator: Validator.minLength(5),
    failureMsg: Failure(SimpleText('Email too short')),
  ),
  Validation(
    validator: AllowPatternValidator(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$'),
    failureMsg: Failure(SimpleText('Invalid email format')),
  ),
]);

final result = emailValidation.validate('user@example.com', []);

Cross-Field Validation #

const passwordValidation = Validation(
  key: 'password',  // Store this field's value
  validator: Validator.minLength(8),
  failureMsg: Failure(SimpleText('Password too short')),
);

const confirmValidation = Validation.relatedTo(
  'password',  // Reference the stored password value
  validator: IsSameAsValidator(),
  failureMsg: Failure(SimpleText('Passwords must match')),
);

final history = <ValidationState>[];
passwordValidation.validate('mypassword', history);
confirmValidation.validate('different', history);
// Returns: Failure(SimpleText('Passwords must match'))

Architecture #

Validation → Validator → UIPayload
   (rule)     (logic)     (result)

Validations are const and can be defined once and reused throughout your app.

0
likes
150
points
1
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Composable validation with const support. Queue validators with termination strategies and cross-field validation.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, ui_payload

More

Packages that depend on validation_queue