dynamic_ui_builder 1.0.3+9 copy "dynamic_ui_builder: ^1.0.3+9" to clipboard
dynamic_ui_builder: ^1.0.3+9 copied to clipboard

A Flutter package to dynamically build multi-step forms from JSON.

Dynamic UI Builder #

A Flutter package to dynamically generate multi-step forms or single fields from JSON configuration. Easily build complex forms with validation, custom layouts, and plugin-based fields.

pub package

✨ Features #

  • Multi-step form UI from JSON
  • All standard input fields (Text, Dropdown, Checkbox, Radio, Switch, Slider, Date/Time)
  • Plugin-based fields: Image Picker, File Picker, Signature Pad, Rating Bar
  • Filter fields with FilterChip UI: Support for both independent (main category) and dependent (subcategory) filters, with dynamic options via optionsMap.
  • Global form data store: All form values are managed in a singleton (FormDataStore), accessible app-wide.
  • Custom validation (regex, min/max, required, etc.)
  • Alignment and layout customization
  • Render any single field independently (without JSON)

🚀 Installation #

Add to your pubspec.yaml:

dependencies:
  dynamic_ui_builder: ^1.0.3+9

Then run:

flutter pub get

🛠️ Usage #

1. Import the package #

import 'package:dynamic_ui_builder/dynamic_ui_builder.dart';

2. Define your JSON config (for a full form) #

const formJson = [
  {
    "type": "filter",
    "label": "Category",
    "key": "category",
    "filterType": "independent",
    "options": ["Electronics", "Clothing", "Books"],
    "validation": {"required": true}
  },
  {
    "type": "filter",
    "label": "Subcategory",
    "key": "subcategory",
    "filterType": "dependent",
    "dependsOn": "category",
    "optionsMap": {
      "Electronics": ["Mobiles", "Laptops"],
      "Clothing": ["Shirts", "Pants"],
      "Books": ["Fiction", "Non-fiction"]
    },
    "validation": {"required": true}
  },
  // ... other fields ...
];

3. Use DynamicUiBuilder (Multi-step Form) #

DynamicUiBuilder(
  jsonConfig: formJson,
  onSubmit: (result) {
    print(result); // result is a Map<String, dynamic>
  },
)

✅ Use Single Field Without JSON #

DynamicFormField(
  config: FormFieldConfig(
    type: 'text',
    label: 'Email',
    key: 'email',
    regex: r'^[^@]+@[^@]+\.[^@]+',
    error: 'Invalid email',
  ),
  onSaved: (value) => print('Saved: $value'),
)

🌐 Global Form Data Store #

All form values are stored in a singleton:

import 'package:dynamic_ui_builder/src/models/form_data_store.dart';

// Access all form data
topLevelMap = FormDataStore.instance.data;

// Clear all form data
FormDataStore.instance.clear();

📦 Supported Field Types #

Type Widget Options/Notes
text TextFormField inputType, minLength, maxLength, regex, required
dropdown DropdownButton options, required
radio RadioListTile options, required
checkbox CheckboxListTile required
switch SwitchListTile required
slider Slider min, max, divisions, required
date showDatePicker minDate, maxDate, required
time showTimePicker required
image image_picker
file file_picker
signature signature pad
rating RatingBar
filter FilterChipField filterType (independent/dependent), options, optionsMap, dependsOn

🧩 Field Configuration Options #

  • type (String): Field type (see above)
  • label (String): Field label
  • key (String): Unique key for result map
  • hint (String): Placeholder/hint text
  • regex (String): Validation regex
  • error (String): Custom error message
  • inputType (String): 'text', 'email', 'number', etc.
  • options (List): For dropdown/radio/filter
  • optionsMap (Map): For dependent filter fields
  • dependsOn (String): For dependent filter fields
  • filterType (String): 'independent' or 'dependent' for filter fields
  • step (int): Step number (for multi-step)
  • min, max, divisions: For slider
  • minLength, maxLength, minLines, maxLines: For text
  • minDate, maxDate: For date
  • required (bool): Required field
  • title (String): Step title (optional)

📋 Example Output #

On submit, you get a Map<String, dynamic> with all field values:

{
  "category": "Electronics",
  "subcategory": "Mobiles",
  "name": "John Doe",
  // ...
}

📝 License #

MIT


Built with by Akshay

4
likes
0
points
0
downloads

Publisher

verified publisherakshayjayale.com

Weekly Downloads

A Flutter package to dynamically build multi-step forms from JSON.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

file_picker, flutter, flutter_pdfview, flutter_rating_bar, http, image_picker, path_provider, signature

More

Packages that depend on dynamic_ui_builder