formio 1.1.0 copy "formio: ^1.1.0" to clipboard
formio: ^1.1.0 copied to clipboard

A comprehensive Flutter package for rendering Form.io forms with 98% feature parity - includes all components, validation, wizard forms, calculated values, JavaScript support, and full API integration.

Changelog #

All notable changes to the Form.io Flutter package will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.1.0 - 2026-01-12 #

Added #

  • ๐Ÿš€ JavaScript Evaluation Support - Execute custom JavaScript for validation and calculations
    • Web platform: Uses native dart:js
    • Mobile/Desktop: Uses flutter_js with QuickJS engine
    • Security measures: Code validation and execution timeouts
  • โœ… Custom JavaScript Validation - customJS validator for Form.io validate.custom fields
  • โœ… JavaScript Calculated Values - Support for calculateValue with JavaScript expressions
  • โœ… Date/Time Validators - Added 5 new validators:
    • minDate / maxDate - Date range validation
    • dateRange - Convenience validator for date ranges
    • minYear / maxYear - Year validation
  • โœ… File Validators - Added 2 new validators:
    • fileSize - File size validation (min/max with smart formatting)
    • filePattern - File type validation (extensions and MIME types)
  • ๐Ÿ“š Comprehensive Documentation - Updated README with unsupported features and roadmap

Changed #

  • ๐Ÿ“ˆ Form.io Compatibility - Increased from ~92% to ~98%
  • ๐Ÿ”ง CalculationEvaluator - Now supports both JSONLogic and JavaScript expressions
  • ๐Ÿ“ Validation Coverage - Improved from 61% to 95% (18/19 validators)

Dependencies #

  • Added flutter_js: ^0.8.5 for JavaScript evaluation on mobile/desktop platforms

Tests #

  • โœ… 23 new tests for date/time and file validators
  • โœ… All 81+ core tests passing

1.0.1 - 2026-01-12 #

Changed #

  • Updated repository URLs to correct GitHub location

1.0.0 - 2026-01-12 #

Added - Phase 1: Centralized Validation System #

  • โœจ Centralized Validators - FormioValidators class with 11 validation methods
    • required() - Required field validation
    • pattern() - Regex pattern matching
    • minLength() / maxLength() - String length constraints
    • minWords() / maxWords() - Word count validation
    • email() - Email format validation
    • url() - URL format validation
    • min() / max() - Numeric range validation
    • json() - JSON format validation
    • combine() - Combine multiple validators
    • fromConfig() - Auto-parse Form.io validate config
  • ๐Ÿงช 28 comprehensive validator tests (100% passing)
  • ๐Ÿ“ Updated TextField and TextArea components to use centralized validators
  • ๐Ÿ”ง Added date type alias for backward compatibility

Added - Phase 2: Wizard Forms & Calculated Values #

  • โœจ Wizard Forms Support
    • WizardConfig model for wizard form configuration
    • WizardRenderer widget for multi-page forms
    • Page navigation (Next/Previous/Jump to page)
    • Visual progress indicator with clickable steps
    • Page-level validation before navigation
    • Form state persistence across pages
  • โœจ Calculated Values
    • CalculationEvaluator for JSONLogic-based calculations
    • Automatic recalculation on dependency changes
    • allowCalculateOverride support
    • Dependency extraction and tracking
    • Integration with FormRenderer
  • ๐Ÿงช 13 calculation evaluator tests (100% passing)
  • ๐Ÿ“š Shopping cart example with auto-calculated totals
  • ๐Ÿ“š Multi-page wizard registration example

Added - Phase 3: Cross-Field Validation #

  • โœจ Cross-Field Validation
    • matchField() - Password confirmation validation
    • compareFields() - Numeric field comparison (>, <, >=, <=, ==, !=)
    • crossFieldValidator() - Helper with custom error messages
    • Integration with fromConfig() for matchField support
  • ๐Ÿงช 15 cross-field validation tests (100% passing)
  • ๐Ÿ“ Updated FormioValidators.fromConfig() to accept formData context

Added - Components (6 new) #

  • ๐Ÿ†• UnknownComponent - Fallback for unsupported types
  • ๐Ÿ†• UrlComponent - URL input with validation
  • ๐Ÿ†• AlertComponent - Display alerts (error, success, info, warning)
  • ๐Ÿ†• AddressComponent - Structured address input
  • ๐Ÿ†• TagsComponent - Chip-based tag input
  • ๐Ÿ†• FormComponent - Nested form support

Added - Example App #

  • ๐Ÿ“ฑ Complete live demo application
  • ๐Ÿ“‹ Form list page with API integration
  • ๐Ÿ“„ Form detail page with rendering and JSON view
  • ๐ŸŽจ Material 3 UI design
  • ๐Ÿ”„ Loading and error states
  • โœ… Submission handling with visual feedback

Fixed #

  • ๐Ÿ› CRITICAL: Fixed ComponentModel.fromJson mutation bug
    • Changed from mutating original JSON to creating a copy
    • Prevents components from becoming "unsupported" on form revisit
  • ๐Ÿ› Fixed AlertComponent using correct alertType field
  • ๐Ÿ› Fixed flaky tests in AlertComponent
  • ๐Ÿ”ง Removed unused imports to fix lint warnings

Changed #

  • โ™ป๏ธ Refactored FormRenderer to support calculated values
  • โ™ป๏ธ Enhanced ComponentFactory with better error handling
  • ๐Ÿ“ Improved documentation across all components
  • ๐Ÿงช Increased test coverage to 56 tests (100% passing)

Performance #

  • โšก Optimized calculated value recalculation with dependency tracking
  • โšก Efficient wizard form state management with separate FormStates per page

0.9.0 2025-XX-XX #

Added #

  • Initial implementation of 35 Form.io components
  • Basic validation support (required only)
  • Simple conditional logic
  • API services (Form, Submission, User, Auth, Action)
  • FormRenderer widget
  • ComponentFactory pattern

Known Limitations #

  • No wizard form support
  • No calculated values
  • Limited validation rules
  • No cross-field validation

Migration Guide #

Upgrading from 0.9.x to 1.0.0 #

Validation Changes

Before (0.9.x):

validator: _isRequired 
  ? (val) => (val == null || val.isEmpty) 
      ? '${component.label} is required.' 
      : null 
  : null

After (1.0.0):

validator: FormioValidators.fromConfig(
  component.raw['validate'],
  component.label,
  formData: _formData, // For cross-field validation
)

Component JSON Changes

No breaking changes to component JSON structure. All existing forms are compatible.

New features:

  • Add matchField to validate for password confirmation
  • Add calculateValue for auto-calculated fields
  • Set display: 'wizard' for multi-page forms

Statistics #

Version 1.1.0 #

  • Components: 41/41 (100%)
  • Validation: 18 validators (95% coverage)
  • Tests: 81+ passing
  • Lines of Code: ~2,200+ lines added
  • Coverage: ~98% Form.io feature parity

Roadmap #

1.2.0 (Next) #

  • โŒ Dynamic select data sources (API-based dropdown options)
  • โŒ Enhanced file handling

1.3.0 #

  • โŒ File upload to Form.io storage
  • โŒ Unique validation via API

Future #

  • โŒ Google Places autocomplete
  • โŒ i18n support
  • โŒ Accessibility improvements

[1.0.0]: https://github.com/m skayali/formio_flutter/releases/tag/v1.0.0 [0.9.0]: https://github.com/mskayali/formio_flutter/releases/tag/v0.9.0

0
likes
100
points
159
downloads

Publisher

verified publisherspinex.io

Weekly Downloads

A comprehensive Flutter package for rendering Form.io forms with 98% feature parity - includes all components, validation, wizard forms, calculated values, JavaScript support, and full API integration.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (license)

Dependencies

curl_logger_dio_interceptor, dio, file_picker, flutter, flutter_html, flutter_js, intl, jsonlogic, provider

More

Packages that depend on formio