nepali_input_formatters 0.0.1 copy "nepali_input_formatters: ^0.0.1" to clipboard
nepali_input_formatters: ^0.0.1 copied to clipboard

A collection of Flutter TextInputFormatters, validators, and utilities tailored for Nepali data formats (phone numbers, citizenship, and Lakhs/Crores currency).

pub package License: MIT

Flutter TextInputFormatters and FormFieldValidators for Nepali data: mobile numbers, citizenship numbers, and Lakh/Crore-grouped currency amounts. Drop them straight into a TextFormField — no manual regex or masking code required.

Features #

Data Formatter Validator
Mobile number NepaliPhoneDigitsFormatter, NepaliPhoneNumberFormatter validateNepaliPhoneNumber
Citizenship number CitizenshipDigitsFormatter, CitizenshipNumberFormatter validateCitizenshipNumber
Currency amount SouthAsianCurrencyFormatter validateCurrencyAmount
  • Live formatting — groups digits as the user types (984-123-4567, 12-01-70-12345, 12,34,567), including correct cursor placement and backspace-over-separator handling.
  • Telecom detectionidentifyNepaliTelecom tells you whether a mobile number belongs to NTC or Ncell, based on its prefix.
  • Formatting-aware validators — every validator strips separators before checking the value, so it works whether the field used a formatter or not.
  • No dependencies beyond Flutter itself.

Getting started #

Add the package to your pubspec.yaml:

dependencies:
  nepali_input_formatters: ^0.0.1

Then import it:

import 'package:nepali_input_formatters/nepali_input_formatters.dart';

Usage #

Mobile number #

TextFormField(
  keyboardType: TextInputType.phone,
  inputFormatters: const [NepaliPhoneNumberFormatter()],
  validator: validateNepaliPhoneNumber,
  decoration: const InputDecoration(
    labelText: 'Mobile number',
    hintText: '984-123-4567',
  ),
)

NepaliPhoneNumberFormatter groups digits as 3-3-4 (e.g. 984-123-4567) and caps input at 10 digits. If you'd rather keep the raw digits in the field and format only for display, use NepaliPhoneDigitsFormatter instead — it restricts input to digits without inserting separators.

Both formatters accept a custom separator:

const NepaliPhoneNumberFormatter(separator: ' ')

To detect the operator (NTC or Ncell) as the user types:

onChanged: (value) {
  final digits = value.replaceAll(RegExp(r'[^0-9]'), '');
  final telecom = identifyNepaliTelecom(digits); // NepaliTelecom.ntc / .ncell / .unknown
}

Citizenship number #

TextFormField(
  keyboardType: TextInputType.number,
  inputFormatters: const [CitizenshipNumberFormatter()],
  validator: validateCitizenshipNumber,
  decoration: const InputDecoration(
    labelText: 'Citizenship number',
    hintText: '12-01-70-12345',
  ),
)

CitizenshipNumberFormatter groups the 11 digits as 2-2-2-5 (district code, registration office code, registration year, serial number). Use CitizenshipDigitsFormatter if you only want the digits restricted to 11 characters, without grouping.

Currency amount (Lakh/Crore grouping) #

TextFormField(
  keyboardType: TextInputType.number,
  inputFormatters: const [SouthAsianCurrencyFormatter()],
  validator: validateCurrencyAmount,
  decoration: const InputDecoration(
    labelText: 'Amount (NPR)',
    hintText: '12,34,567',
  ),
)

SouthAsianCurrencyFormatter groups whole-number input using the South Asian numbering system: the last 3 digits form one group, and every group to its left is 2 digits (e.g. 123456712,34,567). It's digit-only — no decimal point or currency symbol — so add a prefix (Rs. ) via InputDecoration.prefixText if you need one.

Validators without formatters #

Every validator matches Flutter's FormFieldValidator<String> signature and strips separators internally, so they also work on plain, unformatted text fields:

TextFormField(
  validator: validateCurrencyAmount, // works even without SouthAsianCurrencyFormatter
)

Example #

A full runnable demo combining all three fields, live operator detection, and form validation is in example/.

Additional information #

  • Scope — NTC and Ncell mobile prefixes only. Smart Cell/Smart Telecom is intentionally excluded since NTA permanently closed the operator.
  • Issues & feature requests — file them on the issue tracker.
  • Contributing — PRs are welcome. Please include tests for any new formatter or validator.
  • LicenseMIT.
0
likes
160
points
5
downloads

Documentation

API reference

Publisher

verified publisherkushalpun.com.np

Weekly Downloads

A collection of Flutter TextInputFormatters, validators, and utilities tailored for Nepali data formats (phone numbers, citizenship, and Lakhs/Crores currency).

Repository (GitHub)
View/report issues

Topics

#nepal #nepali #input-formatter #validator #currency

License

MIT (license)

Dependencies

flutter

More

Packages that depend on nepali_input_formatters