formio_api
Pure Dart client library for Form.io REST API integration.
Features
- 🎯 Pure Dart: No Flutter dependencies - works in any Dart environment
- 📡 Complete API Coverage: Forms, submissions, users, roles, actions
- 🔐 Authentication: JWT-based auth with token management
- 🌐 Network Layer: Built on Dio with interceptors and logging
- 📦 Type-Safe Models: Full Dart models for all Form.io entities
- ⚙️ Business Logic: Conditional evaluation, calculations, interpolation
Installation
dependencies:
formio_api: ^2.0.0
Usage
Basic Example
import 'package:formio_api/formio_api.dart';
void main() async {
// Configure API client
ApiClient.setBaseUrl(Uri.parse('https://examples.form.io'));
// Fetch forms
final formService = FormService(ApiClient());
final forms = await formService.fetchForms();
print('Loaded ${forms.length} forms');
// Get a specific form
final form = await formService.fetchForm('user');
print('Form: ${form.title}');
// Submit data
final submissionService = SubmissionService(ApiClient());
await submissionService.submit('user', {
'firstName': 'John',
'lastName': 'Doe',
'email': 'john@example.com',
});
}
Authentication
final authService = AuthService(ApiClient());
// Login
final user = await authService.login('user@example.com', 'password');
print('Logged in as: ${user.email}');
// The token is automatically stored and used for subsequent requests
Working with Forms
final formService = FormService(ApiClient());
// List all forms
final forms = await formService.fetchForms();
// Get specific form
final form = await formService.fetchForm('formPath');
// Access form components
for (final component in form.components) {
print('${component.label}: ${component.type}');
}
Submissions
final service = SubmissionService(ApiClient());
// Create submission
await service.submit('formPath', {'field': 'value'});
// List submissions
final submissions = await service.fetchSubmissions('formPath');
// Update submission
await service.updateSubmission('formPath', 'submissionId', {'field': 'newValue'});
// Delete submission
await service.deleteSubmission('formPath', 'submissionId');
Advanced Features
Conditional Logic Evaluation
import 'package:formio_api/formio_api.dart';
final conditional = {
'show': 'true',
'when': 'country',
'eq': 'USA'
};
final formData = {'country': 'USA'};
final shouldShow = ConditionalEvaluator.shouldShow(conditional, formData);
print('Show component: $shouldShow'); // true
Calculated Values
final calculateValue = 'value = data.price * data.quantity';
final formData = {'price': 10.0, 'quantity': 5};
final result = CalculationEvaluator.evaluate(calculateValue, formData);
print('Total: $result'); // 50.0
API Reference
Services
FormService: Manage forms (list, get, create, update, delete)SubmissionService: Handle form submissions (CRUD operations)AuthService: User authentication (login, logout, register)UserService: User managementActionService: Form actions and webhooks
Models
FormModel: Form definition with componentsComponentModel: Individual form componentsSubmissionModel: Form submission dataUserModel: User accountsActionModel: Form actionsRoleModel: User roles
Core Utilities
ConditionalEvaluator: Evaluate component conditional logicCalculationEvaluator: Calculate field valuesInterpolationUtils: String interpolation with form data
For Flutter Apps
If you're building a Flutter application, use the flutter_formio package instead, which includes:
- All formio_api functionality
- Pre-built Flutter widgets for rendering forms
- Material Design components
- Form validation UI
- Custom component system
License
License information
Contributing
Contributions welcome! Please read our contributing guidelines.
Libraries
- formio_api
- Entry point for the formio_api package.