input_validator 0.0.3 copy "input_validator: ^0.0.3" to clipboard
input_validator: ^0.0.3 copied to clipboard

Form validation made easy. Validate input data in an elegant way. Easley handles big form with form builder.

Input Validator #

Validate input value with an efficient way.

Installation #

Run this command:

flutter pub add input_validator

Usages #

The make method will return null if the validation passed.

    /// import 'package:input_validator/input_validator.dart';
    /// here is a basic example
    InputValidator.make(rules:"required|min_length:6",value:"password");

Rules

rules parameter is a string that guide what to do with the value. You can provide as many as posable rules, which should be separated by | sign. Some rules required extra params like rule:param,param, here parameters are separated by comma. A quick example: you want to get user gender in male,female or other, so it would be like in:male,female,other. See Available Validation Rules and explanation.

Value

The value is the given payload for validation.

Customizing Validation Messages #

You can pass messages parameter to the make method. It accept Map<String, dynamic>. The messages key should match with rule name. The message value should be either String or CustomHandler. Example:

    InputValidator.make(
        rules:"required|min_length:6",
        value:null,
        messages:{
            "required": "Password is required."
        },
    );

Custom Rule #

Here is an example of custom rule.

    /// A strong password validation,
    /// Minimum 1 Upper case
    /// Minimum 1 lowercase
    /// Minimum 1 Numeric Number
    /// Minimum 1 Special Character
    /// Common Allow Character ( ! @ # $ & \* ~ )
    InputValidator.make(
        rules:"strongPassword",
        value:null,
        messages:{
            "strongPassword": CustomHandler(onHandle: (payload, _) {
                String  pattern = r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{8,}$';
                RegExp regExp = new RegExp(pattern);
                return regExp.hasMatch(payload) ? null:"Invalid password!";
            })
        },
    );

Form builder #

Build form via form builder. See the full example on the example tab.

    var _form = InputValidator.builder(
        fields: {
                    "full_name": FieldData(rules: "required|min_length:4"),
                    "username": FieldData(rules: "required|min_length:4"),
                    "age": FieldData(rules: "required|min:10"),
                },
        );

    Container(
        child: _form.build(context, child: (state) => ....)
    )

Available Validation Rules #

Below is a list of all available validation rules and their function:

Required, Min (Number), Max (Number), Numeric (Number), Size (Number), Length (String), Max Length (String), Min Length (String), Email, In, Date, Date Between, Date Before, Date After, Date Before Inclusive, Date After Inclusive, Custom Rule,

Required #

The field under validation must be present in the input data and not empty. A field is considered "empty" if one of the following conditions are true:

The value is null.
The value is an empty string.

Min #

The field under validation must have a minimum value and not empty and the value should be convertible to numeric value.

// example
InputValidator.make(value: "5", rules: "min:10");
// reuslt: Provide at least 10.

Max #

The field under validation must have a maximum value and not empty and the value should be convertible to numeric value.

// example
InputValidator.make(value: "15", rules: "max:10");
// reuslt: Maximum limit is 10.

Numeric #

The field under validation must be convertible to a numeric value.

// example
InputValidator.make(value: "abc", rules: "numeric");
// reuslt: Invalid number input.

Size #

The field under validation must be convertible to a numeric value and exec as the given size.

// example
InputValidator.make(value: "5", rules: "size:10");
// reuslt: The size should be 10.

Length #

It will call the toString() method on the value and check the length of the string and match with the given length.

// example
InputValidator.make(value: "5", rules: "length:10");
// reuslt: The input should be 10 characters.

Min Length #

It will call the toString() method on the value and check the length of the string and match with the given length.

// example
InputValidator.make(value: "5", rules: "min_length:10");
// reuslt: Provide at least 5 characters

Max Length #

It will call the toString() method on the value and check the length of the string and match with the given length.

// example
InputValidator.make(value: "15", rules: "max_length:10");
// reuslt: Provide maximum 10 characters

Email #

It will check with a RegEx pattern. You can customize the pattern by override the custom handler.

// example
InputValidator.make(value: "example@gmail", rules: "email");
// reuslt: Invalid email address.

In #

The field under validation must be included in the given list of values.

// example
InputValidator.make(value: "world", rules: "in:1,hello,world");
// reuslt: null

Date #

Valid date that could be parsed with DateTime.parse()

// example
InputValidator.make(value: "date", rules: "date");
// reuslt: Invalid date

Date Between #

Valid date that could be parsed with DateTime.parse(). It will make sure that the given date is newer then minimum date and older then maximum date.

// example 'date_between:min,max'
InputValidator.make(value: "2021-04-10", rules: "date_between:2021-05-17,2021-07-17");
// reuslt: Date out of range.

Date Before #

Valid date that could be parsed with DateTime.parse(). It will make sure that the given date is older then checking date. Also you can try Date Before Inclusive.

// example 'date_before:date'
InputValidator.make(value: "2021-04-10", rules: "date_between:2021-05-17");
// reuslt: null

Date After #

Valid date that could be parsed with DateTime.parse(). It will make sure that the given date is newer then checking date. Also you can try Date After Inclusive.

// example 'date_after:date'
InputValidator.make(value: "2021-04-10", rules: "date_after:2021-05-17");
// reuslt: Provide newer date.

Date After Inclusive #

Valid date that could be parsed with DateTime.parse(). It will make sure that the given date is newer or equal to the checking date.

// example 'date_after_inclusive:date'
InputValidator.make(value: "2021-05-17", rules: "date_after_inclusive:2021-05-17");
// reuslt: null

Date Before Inclusive #

Valid date that could be parsed with DateTime.parse(). It will make sure that the given date is older or equal to the checking date.

// example 'date_before_inclusive:date'
InputValidator.make(value: "2021-05-17", rules: "date_before_inclusive:2021-05-17");
// reuslt: null

License #

MIT

10
likes
140
pub points
55%
popularity

Publisher

unverified uploader

Form validation made easy. Validate input data in an elegant way. Easley handles big form with form builder.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on input_validator