validasi_gen 0.1.0-dev.2 copy "validasi_gen: ^0.1.0-dev.2" to clipboard
validasi_gen: ^0.1.0-dev.2 copied to clipboard

Code generator for Validasi - compile-time validation with zero-cost abstraction.

example/lib/example.dart

import 'dart:async';

import 'package:validasi/validasi.dart';
import 'package:validasi_annotation/validasi_annotation.dart';

part 'example.g.dart';

@ValidateClass(generateAssemble: false)
class User {
  @Validate.string([MinLength(3), MaxLength(100)])
  final String email;

  @Validate.string(
      [MinLength(3), MaxLength(100), AsyncInline(_checkUsernameAvailable)])
  final String username;

  @Validate.string([MinLength(3), MaxLength(100)])
  final String confirmEmail;

  @Validate.iterable([MinLength(1)])
  final List<String> tags;

  final Car car;

  final Car? spareCar;

  final List<Car> previousCars;

  const User({
    required this.email,
    required this.username,
    required this.confirmEmail,
    required this.tags,
    required this.car,
    this.spareCar,
    required this.previousCars,
  });

  @RefineFn(dependsOn: ['email', 'confirmEmail'])
  void emailMatchesConfirm(
    FailFn fail, {
    String? email,
    String? confirmEmail,
  }) {
    if (email != null && confirmEmail != null && email != confirmEmail) {
      fail(message: 'Emails do not match', path: ['confirmEmail']);
    }
  }
}

@ValidateClass(generateAssemble: false)
class Car {
  @Validate.string([MinLength(2)])
  final String make;

  @Validate.string([
    MinLength(2),
  ])
  final String model;

  const Car({required this.make, required this.model});
}

@ValidateClass(generateFields: false)
class InternalFoo {
  @Validate.string([MinLength(1)])
  final String code;

  const InternalFoo({required this.code});
}

FutureOr<bool> _checkUsernameAvailable(String? value) async {
  await Future<void>.delayed(Duration.zero);
  return value != 'taken';
}
0
likes
0
points
202
downloads

Publisher

verified publisheralbetnv.dev

Weekly Downloads

Code generator for Validasi - compile-time validation with zero-cost abstraction.

Homepage
Repository (GitHub)
View/report issues

Topics

#validation #codegen #annotations

License

unknown (license)

Dependencies

analyzer, build, code_builder, dart_style, source_gen

More

Packages that depend on validasi_gen