Validating a number has a maximum value
import 'package:luthor/luthor.dart';
void main() { final intValidator = l.int().max(42); final doubleValidator = l.double().max(42.0); final numberValidator = l.number().max(42);
print(intValidator.validateValue(42)); print(doubleValidator.validateValue(42.0)); print(numberValidator.validateValue(42));}You can use the @HasMax, @HasMaxDouble, and @HasMaxNumber annotations to validate that a number has a maximum value. @HasMax is used for int, @HasMaxDouble is used for double, and @HasMaxNumber is used for num.
import 'package:luthor/luthor.dart';import 'package:freezed_annotation/freezed_annotation.dart';
part 'number_max_schema.freezed.dart';part 'number_max_schema.g.dart';
@luthor@freezedabstract class NumberMaxSchema with _$NumberMaxSchema { const factory NumberMaxSchema({ @HasMax(42) required int intValue, @HasMaxDouble(42.0) required double doubleValue, @HasMaxNumber(42) required num numValue, }) = _NumberMaxSchema;
factory NumberMaxSchema.fromJson(Map<String, dynamic> json) => _$NumberMaxSchemaFromJson(json);}
void main() { final result = $NumberMaxSchemaValidate({ 'intValue': 42, 'doubleValue': 42.0, 'numValue': 42, });
switch (result) { case SchemaValidationSuccess(data: final data): print('✅ Valid: ${data.intValue}, ${data.doubleValue}, ${data.numValue}'); case SchemaValidationError(errors: final errors): print('❌ Errors: $errors'); }}