An open API service indexing awesome lists of open source software.

https://github.com/flutterbysunny/bharatvalidator

India-first Flutter form validation package with 30+ validators.
https://github.com/flutterbysunny/bharatvalidator

Last synced: 4 days ago
JSON representation

India-first Flutter form validation package with 30+ validators.

Awesome Lists containing this project

README

          

# ๐Ÿ‡ฎ๐Ÿ‡ณ BharatValidator

**India-first Flutter form validation package with 30+ validators.**

Validate Aadhaar, PAN, GST, IFSC, UPI, Driving License, Passport, Voter ID, CIN, TAN, FSSAI, ABHA, EPF, Card (Luhn), RERA, Udyam and more โ€” with **English, Hindi & Gujarati** error messages.

[![pub package](https://img.shields.io/pub/v/bharatvalidator.svg)](https://pub.dev/packages/bharatvalidator)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

---

## โœจ Features

### ๐Ÿชช Identity
| Validator | Description |
|---|---|
| `aadhaar` | 12-digit Aadhaar (starts 2โ€“9) |
| `pan` | PAN card (ABCDE1234F format) |
| `passport` | Indian passport number |
| `voterId` | Voter ID / EPIC number |
| `drivingLicense` | Indian driving license number |

### ๐Ÿข Tax & Business
| Validator | Description |
|---|---|
| `gst` | 15-char GST number |
| `tan` | TAN number (PDES03028F format) |
| `cin` | Company Identification Number |
| `fssai` | FSSAI license number (14 digits) |
| `udyam` | Udyam / MSME registration number |
| `rera` | RERA registration number |

### ๐Ÿฆ Banking & Finance
| Validator | Description |
|---|---|
| `ifsc` | Bank IFSC code |
| `upi` | UPI ID (name@handle) |
| `bankAccount` | Bank account number (9โ€“18 digits) |
| `cardNumber` | Credit/Debit card number (Luhn algorithm) |
| `micr` | MICR code (9 digits) |
| `epf` | EPF / PF account number |
| `amount` | Indian currency amount with optional min/max (โ‚น) |

### ๐Ÿ“ž Contact
| Validator | Description |
|---|---|
| `phone` | 10-digit mobile (+91 supported) |
| `email` | Email address |
| `landline` | Indian landline with STD code |

### ๐Ÿฅ Health
| Validator | Description |
|---|---|
| `abha` | ABHA / Ayushman Bharat Health Account number |

### ๐Ÿ“ Address & Vehicle
| Validator | Description |
|---|---|
| `pincode` | 6-digit Indian pincode |
| `vehicle` | Indian vehicle number (GJ01AB1234) |

### ๐Ÿ‘ค Personal
| Validator | Description |
|---|---|
| `name` | Name (supports Devanagari & Gujarati script) |
| `password` | Strong password (8+ chars, upper, lower, digit, symbol) |
| `username` | Username (3โ€“20 chars, letters/digits/_/-) |
| `dob` | Date of birth with optional min/max age |

### ๐ŸŒ Digital
| Validator | Description |
|---|---|
| `url` | Website URL (http/https) |
| `otp` | OTP โ€” 4 or 6 digit |

**Multi-language error messages:** English ๐Ÿ‡ฌ๐Ÿ‡ง ยท Hindi ๐Ÿ‡ฎ๐Ÿ‡ณ ยท Gujarati ๐ŸŸ 

---

## ๐Ÿš€ Installation

```yaml
dependencies:
bharatvalidator: ^1.0.0
```

```bash
flutter pub get
```

---

## ๐Ÿ“– Usage

### Basic

```dart
import 'package:bharatvalidator/bharatvalidator.dart';

final v = BharatValidator(); // English (default)

TextFormField(
validator: v.aadhaar, // Pass directly!
)
```

### Change Language

```dart
// Hindi
final v = BharatValidator(locale: BharatLocale.hindi);

// Gujarati
final v = BharatValidator(locale: BharatLocale.gujarati);
```

### Validators with Parameters

```dart
// DOB with minimum age check
TextFormField(
validator: (val) => v.dob(val, minAge: 18),
)

// Amount with min/max range
TextFormField(
validator: (val) => v.amount(val, min: 1, max: 100000),
)

// OTP length
TextFormField(
validator: (val) => v.otp(val, length: 6),
)
```

### Full Form Example

```dart
final v = BharatValidator(locale: BharatLocale.hindi);

Form(
key: _formKey,
child: Column(
children: [
// Personal
TextFormField(validator: v.name, decoration: InputDecoration(labelText: 'Name')),
TextFormField(validator: v.username, decoration: InputDecoration(labelText: 'Username')),
TextFormField(validator: v.phone, decoration: InputDecoration(labelText: 'Mobile')),
TextFormField(validator: v.email, decoration: InputDecoration(labelText: 'Email')),
TextFormField(validator: v.password, decoration: InputDecoration(labelText: 'Password')),
TextFormField(validator: (v) => v.dob(v, minAge: 18), decoration: InputDecoration(labelText: 'DOB')),

// Government IDs
TextFormField(validator: v.aadhaar, decoration: InputDecoration(labelText: 'Aadhaar')),
TextFormField(validator: v.pan, decoration: InputDecoration(labelText: 'PAN')),
TextFormField(validator: v.voterId, decoration: InputDecoration(labelText: 'Voter ID')),
TextFormField(validator: v.passport, decoration: InputDecoration(labelText: 'Passport')),
TextFormField(validator: v.drivingLicense, decoration: InputDecoration(labelText: 'Driving License')),

// Tax & Business
TextFormField(validator: v.gst, decoration: InputDecoration(labelText: 'GST')),
TextFormField(validator: v.tan, decoration: InputDecoration(labelText: 'TAN')),
TextFormField(validator: v.cin, decoration: InputDecoration(labelText: 'CIN')),
TextFormField(validator: v.fssai, decoration: InputDecoration(labelText: 'FSSAI')),
TextFormField(validator: v.udyam, decoration: InputDecoration(labelText: 'Udyam')),

// Banking
TextFormField(validator: v.ifsc, decoration: InputDecoration(labelText: 'IFSC')),
TextFormField(validator: v.upi, decoration: InputDecoration(labelText: 'UPI ID')),
TextFormField(validator: v.bankAccount, decoration: InputDecoration(labelText: 'Account No.')),
TextFormField(validator: v.cardNumber, decoration: InputDecoration(labelText: 'Card Number')),

ElevatedButton(
onPressed: () => _formKey.currentState!.validate(),
child: Text('Submit'),
),
],
),
)
```

---

## ๐ŸŒ Supported Languages

```dart
BharatLocale.english // "Enter a valid 12-digit Aadhaar number."
BharatLocale.hindi // "เคฎเคพเคจเฅเคฏ 12 เค…เค‚เค•เฅ‹เค‚ เค•เคพ เค†เคงเคพเคฐ เคจเค‚เคฌเคฐ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚เฅค"
BharatLocale.gujarati // "เชฎเชพเชจเซเชฏ 12 เช…เช‚เช•เชจเซ‹ เช†เชงเชพเชฐ เชจเช‚เชฌเชฐ เชฆเชพเช–เชฒ เช•เชฐเซ‹."
```

---

## ๐Ÿ—๏ธ Project Structure

```
bharatvalidator/
โ”œโ”€โ”€ lib/
โ”‚ โ”œโ”€โ”€ bharatvalidator.dart # Main export
โ”‚ โ””โ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ bharat_validator.dart # Main BharatValidator class
โ”‚ โ”œโ”€โ”€ locale/
โ”‚ โ”‚ โ””โ”€โ”€ bharat_locale.dart # Multi-language messages
โ”‚ โ””โ”€โ”€ validators/
โ”‚ โ”œโ”€โ”€ aadhaar_validator.dart
โ”‚ โ”œโ”€โ”€ pan_validator.dart
โ”‚ โ”œโ”€โ”€ gst_validator.dart
โ”‚ โ”œโ”€โ”€ tan_validator.dart
โ”‚ โ”œโ”€โ”€ cin_validator.dart
โ”‚ โ”œโ”€โ”€ ifsc_validator.dart
โ”‚ โ”œโ”€โ”€ upi_validator.dart
โ”‚ โ”œโ”€โ”€ pincode_validator.dart
โ”‚ โ”œโ”€โ”€ phone_validator.dart
โ”‚ โ”œโ”€โ”€ landline_validator.dart
โ”‚ โ”œโ”€โ”€ email_validator.dart
โ”‚ โ”œโ”€โ”€ vehicle_validator.dart
โ”‚ โ”œโ”€โ”€ passport_validator.dart
โ”‚ โ”œโ”€โ”€ voter_id_validator.dart
โ”‚ โ”œโ”€โ”€ driving_license_validator.dart
โ”‚ โ”œโ”€โ”€ bank_account_validator.dart
โ”‚ โ”œโ”€โ”€ card_number_validator.dart
โ”‚ โ”œโ”€โ”€ micr_validator.dart
โ”‚ โ”œโ”€โ”€ epf_validator.dart
โ”‚ โ”œโ”€โ”€ fssai_validator.dart
โ”‚ โ”œโ”€โ”€ abha_validator.dart
โ”‚ โ”œโ”€โ”€ rera_validator.dart
โ”‚ โ”œโ”€โ”€ udyam_validator.dart
โ”‚ โ”œโ”€โ”€ name_validator.dart
โ”‚ โ”œโ”€โ”€ password_validator.dart
โ”‚ โ”œโ”€โ”€ username_validator.dart
โ”‚ โ”œโ”€โ”€ dob_validator.dart
โ”‚ โ”œโ”€โ”€ amount_validator.dart
โ”‚ โ”œโ”€โ”€ url_validator.dart
โ”‚ โ””โ”€โ”€ otp_validator.dart
โ”œโ”€โ”€ example/ # Full demo app
โ””โ”€โ”€ test/ # Unit tests
```

---

## ๐Ÿงช Running Tests

```bash
flutter test
```

---

## ๐Ÿ“„ License

MIT License ยฉ 2026 โ€” Made with โค๏ธ for Indian Flutter developers.