airtable_crud 1.3.0
airtable_crud: ^1.3.0 copied to clipboard
A Flutter plugin for seamless integration with Airtable's API, enabling CRUD operations and record filtering with ease.
Changelog #
1.3.0 Modern API Design & Architecture Improvements #
⚠️ Deprecations (All still work!) #
airtable_plugin.dartimport → Useairtable_crud.dartinsteadfetchRecordsWithFilter()method → UsefetchRecords(filter: ...)instead- Direct
AirtableRecord.fieldsmutation → Use.copyWith()or.updateField()instead - Basic
AirtableCrud()constructor → UseAirtableCrud.withConfig()for advanced features
✨ New Features #
Core Improvements:
- Unified
fetchRecords()method with optional filter parameter - Exception hierarchy for better error handling:
NetworkException- Connection and timeout errorsAuthException- Authentication and authorization errors (401/403)RateLimitException- Rate limit errors with retry guidance (429)ValidationException- Data validation errors (422)NotFoundException- Resource not found errors (404)
AirtableConfigclass for centralized configurationAirtableCrud.withConfig()constructor for advanced setup- Configurable timeouts, retry logic, and logging
Enhanced Models:
AirtableRecord.copyWith()method for immutable updatesAirtableRecord.updateField()convenience methodAirtableRecord.removeField()methodAirtableRecord.getField<T>()type-safe field accessorAirtableRecord.hasField()field existence checkDeleteResultmodel with deletion metadata
Improved Return Values:
updateRecord()now returns the updatedAirtableRecorddeleteRecord()now returnsDeleteResultwith metadata- Better operation feedback and logging capabilities
New Bulk Operations:
updateBulkRecords()- Update multiple records efficientlydeleteBulkRecords()- Delete multiple records in batch
HTTP Client Improvements:
- Automatic retry with exponential backoff
- Configurable timeout handling
- Better error parsing and reporting
- Optional request/response logging
🏗️ Architecture Improvements #
- Separated concerns: client, config, models properly organized
AirtableClientclass for HTTP operations abstractionRequestBuilderclass for URL constructionAirtableConstantsclass for centralized constants- Better code organization and maintainability
- Improved testability with dependency injection support
📝 Documentation #
- Added
MIGRATION.mdwith detailed upgrade guide - Updated
README.mdwith new patterns and examples - Added
PLAN.mddocumenting the modernization strategy - Added
STRUCTURE.mdwith architecture overview - Comprehensive inline documentation
- More code examples throughout
🔧 Technical Details #
- No new external dependencies added
- Still using
http: ^1.3.0 - SDK requirement:
^3.5.3 - 100% backward compatible - no breaking changes
- All deprecated features still work with warnings
🚀 Migration #
See MIGRATION.md for a detailed upgrade guide.
TL;DR: Just change your import to airtable_crud.dart and you're good!
🔮 Future (v2.0.0) #
Deprecated items will be removed in v2.0.0 (estimated 6-12 months). Plenty of time to migrate!
1.2.5 #
Documentation Updates #
- Updated README to reflect the removal of the query builder.
- Updated examples
1.2.3 #
🔥 Enhancements #
- Added
fieldsparameter support tofetchRecordsWithFilter, allowing users to retrieve only specific fields along with filters. - Improved query string encoding to correctly format
fields[]parameters. - Ensured proper pagination handling while using filters.
1.0.0 #
- Initial version.