indonesian_form_kit 0.1.0
indonesian_form_kit: ^0.1.0 copied to clipboard
A Flutter form toolkit for Indonesian apps with validators, input formatters, parsers, and ready-to-use form fields.
indonesian_form_kit #
A Flutter form toolkit for Indonesian apps. It includes validators, input formatters, parsers, and ready-to-use TextFormField widgets for common local inputs.
Features #
- Rupiah input formatting and integer parsing.
- Indonesian mobile phone formatting, validation, and
+62normalization. - NIK formatting and validation, with optional date-of-birth checks.
- NPWP validation for 15 digit and 16 digit formats.
- Postal code and vehicle plate number validation.
- Ready-to-use form fields for Rupiah, phone, NIK, NPWP, postal code, and vehicle plate number.
- General validators for required, email, min length, max length, and validator composition.
Installation #
Add the package to your pubspec.yaml:
dependencies:
indonesian_form_kit: ^0.1.0
Then import it:
import 'package:flutter/material.dart';
import 'package:indonesian_form_kit/indonesian_form_kit.dart';
Basic Usage #
TextFormField(
inputFormatters: [
IndonesianFormatters.rupiah(),
],
validator: IndonesianValidators.required(),
);
Formatter Examples #
TextFormField(
inputFormatters: [
IndonesianFormatters.rupiah(),
],
);
TextFormField(
inputFormatters: [
IndonesianFormatters.phone(),
],
);
TextFormField(
inputFormatters: [
IndonesianFormatters.nik(),
],
);
Formatter output examples:
1000becomesRp1.0001000000becomesRp1.000.000081234567890becomes0812-3456-78901234567890123456becomes123456 789012 3456123456789012345becomes12.345.678.9-012.345B1234ABCbecomesB 1234 ABC
Parser Examples #
final amount = IndonesianCurrencyParser.parse('Rp1.500.000');
final phone = IndonesianPhoneParser.normalize('081234567890');
amount is 1500000 and phone is +6281234567890.
Validator Examples #
TextFormField(
validator: IndonesianValidators.combine([
IndonesianValidators.required(),
IndonesianValidators.phone(),
]),
);
TextFormField(
validator: IndonesianValidators.nik(
required: true,
validateDateOfBirth: true,
),
);
Ready-to-use Field Examples #
IndonesianPhoneField(
label: 'Nomor HP',
required: true,
onChangedNormalized: (value) {
// value is formatted as +62xxxxxxxxxx when valid enough to normalize.
},
);
IndonesianRupiahField(
label: 'Harga',
required: true,
onChangedValue: (value) {
// value is an int parsed from the formatted Rupiah text.
},
);
API Overview #
IndonesianFormatters.rupiah()IndonesianFormatters.phone()IndonesianFormatters.nik()IndonesianFormatters.npwp()IndonesianFormatters.plateNumber()IndonesianValidators.required()IndonesianValidators.email()IndonesianValidators.minLength()IndonesianValidators.maxLength()IndonesianValidators.combine()IndonesianValidators.phone()IndonesianValidators.nik()IndonesianValidators.npwp()IndonesianValidators.postalCode()IndonesianValidators.plateNumber()IndonesianCurrencyParser.parse()IndonesianPhoneParser.normalize()IndonesianRupiahFieldIndonesianPhoneFieldIndonesianNikFieldIndonesianNpwpFieldIndonesianPostalCodeFieldIndonesianPlateNumberField
Notes #
Validation is intentionally practical and format-focused. NIK validation checks length, repeated digits, and optionally the date-of-birth segment. NPWP validation supports both legacy 15 digit values and newer 16 digit values at a basic format level.
Repository #
Source code and issues are available on GitHub:
https://github.com/donisettt/indonesian_form_kit
License #
MIT