Agani ID Formatter

pub package

Comprehensive Indonesian data formatter and validator package for Flutter. Format and validate Rupiah, NIK, NPWP, phone numbers, postal codes, bank accounts, dates, and more!

Features

✅ Rupiah Formatter - Format and parse Indonesian currency with decimal support ✅ NIK (ID Card) - Format, validate, and extract information ✅ NPWP (Tax ID) - Format and validate ✅ Phone Number - Format, validate, and detect operator ✅ Postal Code - Validate Indonesian postal codes ✅ Bank Account - Format bank account numbers ✅ Date Formatter - Indonesian date formats (long, short, full) ✅ Province Data - Complete list of Indonesian provinces ✅ Bank Data - 100+ Indonesian banks with codes ✅ E-Wallet Data - OVO, DANA, ShopeePay, GoPay, LinkAja

Installation

Add this to your pubspec.yaml:

dependencies: agani_id_formatter: ^1.0.0

Then run: flutter pub get

Usage

Rupiah Formatter

import 'package:agani_id_formatter/agani_id_formatter.dart';

RupiahFormatter.format(1000000); // Rp1.000.000 RupiahFormatter.format(1500.50, decimal: 2); // Rp1.500,50 RupiahFormatter.format(-500000); // -Rp500.000

RupiahFormatter.parse('Rp1.000.000'); // 1000000.0

NIK (ID Card) Formatter & Validator

NIKFormatter.format('3201234567890123'); // 320123.456789.0123

NIKValidator.validate('3201234567890123'); // true

var info = NIKFormatter.extract('3201234567890123'); print(info'provinceCode'); // 32 print(info'gender'); // Laki-laki print(info'birthDate'); // 1990-01-23

NPWP Formatter & Validator

NPWPFormatter.format('123456789012345'); // 12.345.678.9-012.345

NPWPValidator.validate('123456789012345'); // true

Phone Number Formatter & Validator

PhoneFormatter.format('081234567890'); // 0812-3456-7890 PhoneFormatter.format('081234567890', format: 'international'); // +62 812-3456-7890

PhoneValidator.validate('081234567890'); // true

PhoneValidator.getOperator('081234567890'); // Telkomsel

Date Formatter

var date = DateTime(2024, 1, 1);

IndonesianDateFormatter.format(date); // 1 Januari 2024 IndonesianDateFormatter.format(date, format: 'full'); // Senin, 1 Januari 2024

IndonesianDateFormatter.parse('1 Januari 2024'); // DateTime

Province Data

IndonesiaProvinces.getProvinceName('32'); // Jawa Barat

IndonesiaProvinces.getAllProvinceNames();

Bank Data

IndonesiaBanks.getBankName('014'); // Bank BCA

IndonesiaBanks.searchBanks('BCA');

IndonesiaBanks.getAllBankNames();

E-Wallet Data

IndonesiaEWallets.getEWalletByCode('OVO');

IndonesiaEWallets.validateEWalletNumber('OVO', '081234567890');

IndonesiaEWallets.getAllEWalletNames();

Complete Example

Check the /example folder for a complete Flutter app demonstrating all features.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Created by Abdul Gani Pohan

Changelog

See CHANGELOG.md for version history.

Libraries

agani_id_formatter