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