craft_ux 1.0.8
craft_ux: ^1.0.8 copied to clipboard
A Flutter package that provides a collection of reusable UI components and utilities for building beautiful and consistent user interfaces.
Craft UX #
A Flutter package that provides a comprehensive collection of reusable UI components and utilities for building beautiful, consistent, and dynamic user interfaces with advanced form handling capabilities.
Features #
- Dynamic Form Builder: Create complex forms from JSON definitions
- HTTP Client Provider: Easy API integration with Dio
- Advanced Form Handling: Validation, conditional fields, and auto-fill
- Custom UI Components: Dropdowns, date pickers, amount fields, and more
- Provider-based State Management: Efficient state management with ChangeNotifier
- Form Validation: Built-in validation with custom rules and conditional validation
- Multi-select Dropdowns: Advanced dropdown with search and multi-selection
- Auto-fill Support: Automatic field population based on selections
- Responsive Design: Mobile-first design with customizable themes
- Type Safety: Robust type handling for form values and API responses
Getting started #
Add this to your package's pubspec.yaml file:
dependencies:
craft_ux: ^1.0.7
Usage #
Here's a simple example of how to use the Dynamic Form:
import 'package:flutter/material.dart';
import 'package:craft_ux/craft_ux.dart';
import 'package:dio/dio.dart';
void main() {
final dio = Dio(BaseOptions(
baseUrl: 'https://your-api.com',
headers: {'Authorization': 'Bearer your-token'},
));
runApp(
MaterialApp(
home: DynamicForm(
componentName: 'my_form',
formJson: formDefinition,
dio: dio,
onSubmitSuccess: (data, isValid) {
print('Form submitted: $data, Valid: $isValid');
},
),
),
);
}
For more examples, check out the /example directory in the repository.
Form Definition Example #
{
"title": "User Registration",
"sections": [
{
"title": "Personal Information",
"fields": [
{
"name": "first_name",
"label": "First Name",
"fieldType": "text",
"validation": {
"required": true,
"minLength": 2,
"maxLength": 30
}
},
{
"name": "email",
"label": "Email",
"fieldType": "text",
"validation": {
"required": true,
"regex": {
"pattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$",
"message": "Please enter a valid email address"
}
}
}
]
}
]
}
Additional information #
Documentation #
For detailed documentation, visit our documentation site.
Contributing #
We welcome contributions! Please see our contributing guide for details.
Issues and feedback #
Please file issues and feature requests on the GitHub repository.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Publishing #
Pre-publishing Checklist #
Before publishing a new version, ensure:
- Update Version: Increment version in
pubspec.yaml - Update CHANGELOG: Add entry for new version in
CHANGELOG.md - Test Package: Run tests and verify functionality
- Update Documentation: Ensure README.md is current
- Check Dependencies: Verify all dependencies are up to date
Publishing Commands #
# 1. Validate package without publishing
dart pub publish --dry-run
# 2. Publish to pub.dev
dart pub publish
# 3. Force publish (skip some checks)
dart pub publish --force
Version Management #
- Follow semantic versioning (MAJOR.MINOR.PATCH)
- Update version in
pubspec.yaml - Document changes in
CHANGELOG.md - Tag releases in Git repository
Login to pub.dev #
dart pub login
Enter your pub.dev credentials when prompted.