DIGIT Form Engine

A dynamic form rendering engine for Flutter that builds multi-page, configurable forms from JSON schema. It handles field rendering, validation, summary generation — all driven by configuration.

Overview

A dynamic form rendering engine for Flutter, built on top of the digit_ui_components package. It allows you to define flexible, multi-page forms using a JSON schema. The engine renders fields and pages based on configuration, with automatic validation, navigation, and summary generation.

Link to the Pub Package:

Features

  • Render multi-page forms from JSON schema fetched via MDMS

  • Support for 14+ field types — text, dropdown, radio, checkbox, date, DOB, numeric, GPS coordinates, QR/barcode scanner, locality search, and more

  • Built-in validation — required, min/max length, min/max value, regex pattern, cross-field comparison

  • Conditional field visibility — show or hide fields based on formula expressions at runtime

  • Auto-fill fields based on conditions (e.g., auto-calculate age from date of birth)

  • Conditional navigation — route to different pages based on field values

  • Multi-entity tab view — capture same fields for multiple selected entities (e.g., multiple products)

  • Summary page generation with edit support

  • Custom widget integration — plug in your own widgets using BaseReactiveFieldWrapper

  • QR code and GS1 barcode scanning with validation

  • Screenshot protection on sensitive pages

  • Multi-language localization support

Supported Field Types:

Format
Description

text

Plain text input

textArea

Multi-line text input

numeric

Number input with min/max constraints

dropdown

Single or multi-select dropdown

radio

Radio button group

checkbox

Boolean checkbox

date

Date picker with range support

dob

Date of birth picker with age calculation

mobileNumber

Phone number with format validation

latLng

GPS coordinates (latitude, longitude, accuracy)

locality

boundary

scanner

QR code and GS1 barcode scanner

idPopulator

Auto-generated ID field

custom

Plug in any custom widget

Supported Validations:

Type
Description

required

Field must not be empty

minLength / maxLength

String length constraints

min / max

Numeric value constraints

pattern

Regex pattern matching

notEqualTo

Must not equal another field's value

scanLimit

Max number of scans allowed

isGS1

Validate GS1 barcode format

Sequence Diagram

Installation

Add this to your package's pubspec.yaml file:

Then run:

Last updated

Was this helpful?