Number Schema
Use Validasi.number<T>() to validate numeric values.
T must extend num, so you can choose the exact numeric type you want:
Validasi.number<int>(...)for integersValidasi.number<double>(...)for floating-point valuesValidasi.number<num>(...)for mixed numeric values
dart
import 'package:validasi/validasi.dart';
import 'package:validasi/rules.dart';
final intSchema = Validasi.number<int>([
NumberRules.moreThanEqual(0),
]);
final doubleSchema = Validasi.number<double>([
NumberRules.moreThan(0.0),
]);Available Rules
NumberRules.moreThan
Ensures the value is strictly greater than a minimum.
dart
final positiveSchema = Validasi.number<int>([
NumberRules.moreThan(0),
]);
print(positiveSchema.validate(1).isValid); // true
print(positiveSchema.validate(0).isValid); // falseNumberRules.moreThanEqual
Ensures the value is greater than or equal to a minimum.
dart
final nonNegativeSchema = Validasi.number<int>([
NumberRules.moreThanEqual(0),
]);
print(nonNegativeSchema.validate(0).isValid); // true
print(nonNegativeSchema.validate(-1).isValid); // falseNumberRules.lessThan
Ensures the value is strictly less than a maximum.
dart
final belowHundredSchema = Validasi.number<int>([
NumberRules.lessThan(100),
]);
print(belowHundredSchema.validate(99).isValid); // true
print(belowHundredSchema.validate(100).isValid); // falseNumberRules.lessThanEqual
Ensures the value is less than or equal to a maximum.
dart
final maxHundredSchema = Validasi.number<int>([
NumberRules.lessThanEqual(100),
]);
print(maxHundredSchema.validate(100).isValid); // true
print(maxHundredSchema.validate(101).isValid); // falseNumberRules.finite
Ensures a double value is finite (not NaN, Infinity, or -Infinity).
dart
final finiteDoubleSchema = Validasi.number<double>([
NumberRules.finite(),
]);
print(finiteDoubleSchema.validate(10.5).isValid); // true
print(finiteDoubleSchema.validate(double.infinity).isValid); // falseCombining Number Rules
You can combine range and safety checks in one schema.
dart
final priceSchema = Validasi.number<double>([
NumberRules.finite(),
NumberRules.moreThan(0.0),
NumberRules.lessThanEqual(9999.99),
]);
final result = priceSchema.validate(149.99);
print(result.isValid); // true