queen_validators 0.0.1+8-beta queen_validators: ^0.0.1+8-beta copied to clipboard
validate variables with extensions , pure flutter TextFormFeild with qValidator function and DTO
Queen validators 👑 #
Table of Contents #
مقال يشرح بالعربي الفائده من المكتبة وطريقة الاستخدام
Features #
- easily customize form validation error massages with any localization solution
- need a new rule ? just extend QueenValidationRule
- validate DTO s directly after instantiate them
- extension on String and dynamic Types give you little push
Supported Rules #
Rule | # | default message |
---|---|---|
IsOptional | allows you to skip the errors if the input is empty | |
IsRequired | the input value must not be empty | required |
IsEmail | the input value must be a valid email address |
is not valid email address |
IsUrl | the input value must be a valid url address |
not valid URL |
Match(String stringToMatchWith,{bool ignoreCase = false}) |
the input value must match other String | did not match |
IsIn(List<String> ) |
the input value must be in the provided list | is not accepted |
IsNotIn(List<String> ) |
the input value must not be in the provided list | is not valid email address |
MaxLength(int max) |
the input value length must not be > the max | 'max length is $max' |
MinLength(int min) |
the input value length must not be < the min | 'min length is $min' |
RegExpRule(RegExp regX) |
the input value mush match the provided regX | did not match |
Contain(String value) |
checks if the input does contain the provided value | must contain $value |
NotContains(String val) |
checks if input does not contain the provided value | must not contain $value |
ContainsAny(List<String> val) |
check if the value contain at lest one of String form the provided list | must contain any blacklisted keywords |
NotContainsAny(List<String> val) |
check if the value does not contain any item from the provided list | must contain at least one of the whitelisted keywords |
installation #
dependencies:
queen_validators: ^0.0.1+6-beta
Validate variables #
const badEmail = 'QueenRoyal.kingdom';
print(badEmail.isEmail) // false
const validEmail = 'Queen@Royal.kingdom';
print(validEmail.isEmail) // true
const badUrl = 'queen url validation';
print(badUrl.isURL) // false
const validUrl = 'https://www.abc.com';
print(validUrl.isURL) // true
Validate Forms #
import 'package/queen_validators/queen_validators.dart';
@override
Widget build(BuildContext context) {
return TextFormField(
// use qValidator function and provider list of rules to apply on this field
validator: qValidator([
IsEmail(),
MinLength(8),
MaxLength(30, msg: "optionally you can decide which message to display if the validation fails"),
]),
);
}
Validate Dto #
import 'package:queen_validators/queen_validators.dart';
// extends QueenDto
class LoginDto extends QueenDto {
final String email;
final String password;
LoginDto({
this.email,
this.password,
}) : super();
// don't forget to call the super;
// setup your keys and rules
@override
Map<String, List<QueenValidationRule>> get rules => {
'email': [IsEmail()],
'password': [MinLength(5),MaxLength(50)]
};
// make sure to use same keys you used in the roles getter
@override
Map<String, dynamic> toMap() {
return {'email': this.email,
'password': this.password,
};
}
}
void main() {
try {
// it will throw QValidationException containing the failed rules
LoginDto(email: 'queen@kingdom.com', password: 'bar');
} on QValidationException catch (e) {
print(e.errors);
}
}
TODO #
- ✅ example app
- ❌ phone validation
- ❌ color validation
- ❌ date validation
- ✅ tests