A versatile validator package for form validation and general use in Dart and Flutter projects. It provides simple and reusable validation rules that can be used in forms or other input validation scenarios.

Features

  • Form Validation: Easy-to-use validation rules for forms, including required fields, email validation, and password confirmation.
  • Custom Validation: Define your own validation rules with simple callback functions.

Usage

Basic Example with IstValidator

Here is an example of how to use IstValidator to validate email input in a form:

bool isValidEmail = IstValidator.validateEmail("example@gmail.com");
print(isValidEmail); // true

bool isNotEmpty = IstValidator.validateIsNotEmpty("Hello");
print(isNotEmpty); // true

bool isEmpty = IstValidator.validateIsEmpty("");
print(isEmpty) // true

bool isValidLength = IstValidator.validateMaxLength("hello", 10);
print(isValidLength); // true

bool hasMinLength = IstValidator.validateMinLength("hi", 5);
print(hasMinLength); // false

bool isNumber = IstValidator.validateNumber("123.45");
print(isNumber); // true

bool passwordsMatch = IstValidator.confirmPassword("password", "password");
print(passwordsMatch); // true

bool isLink = IstValidator.validateLink("https://spee.dev");
print(isLink); // true

Basic Example with IstFormValidator

import 'package:flutter/material.dart';
import 'package:ist_validator/ist_validator.dart';

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // Global key to identify the form
  final _formKey = GlobalKey<FormState>();

  // Controllers to get the values of the text fields
  final TextEditingController _nameController = TextEditingController();
  final TextEditingController _surnameController = TextEditingController();
  final TextEditingController _emailController = TextEditingController();
  final TextEditingController _passwordController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Ist Form Validator Example',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Register'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Form(
            key: _formKey, // Assign the form key
            child: Column(
              children: [
                // Name TextField
                TextFormField(
                  controller: _nameController,
                  decoration: const InputDecoration(
                    labelText: 'Name',
                  ),
                  keyboardType: TextInputType.emailAddress,
                  validator: (value) => IstFormValidator.customValidate(
                    value!,
                    rules: [
                      RequiredRule(),
                      MinLengthRule(3),
                      MaxLengthRule(15),
                    ],
                  ),
                ),
                const SizedBox(height: 16),
                // Surname TextField
                TextFormField(
                  controller: _surnameController,
                  decoration: const InputDecoration(
                    labelText: 'Surname',
                  ),
                  keyboardType: TextInputType.emailAddress,
                  validator: (value) => IstFormValidator.customValidate(
                    value!,
                    rules: [
                      RequiredRule(),
                      MinLengthRule(3),
                      MaxLengthRule(15),
                    ],
                  ),
                ),
                const SizedBox(height: 16),
                // Email TextField
                TextFormField(
                  controller: _emailController,
                  decoration: const InputDecoration(
                    labelText: 'Email',
                  ),
                  keyboardType: TextInputType.emailAddress,
                  validator: (value) => IstFormValidator.customValidate(
                    value!,
                    rules: [
                      RequiredRule(),
                      EmailFormatRule(),
                      MinLengthRule(3),
                      MaxLengthRule(50),
                    ],
                  ),
                ),
                const SizedBox(height: 16),
                // Password TextField
                TextFormField(
                  controller: _passwordController,
                  decoration: const InputDecoration(
                    labelText: 'Password',
                  ),
                  obscureText: true,
                  validator: (value) => IstFormValidator.customValidate(
                    value!,
                    rules: [
                      RequiredRule(),
                      MinLengthRule(6),
                      MaxLengthRule(15),
                    ],
                  ),
                ),
                const SizedBox(height: 20),
                // Submit Button
                ElevatedButton(
                  onPressed: () {
                    if (_formKey.currentState!.validate()) {
                      // If the form is valid, show a snackbar or proceed
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text('Form is valid!')),
                      );
                    }
                  },
                  child: const Text('Submit'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}