deo_emerges 0.3.0
deo_emerges: ^0.3.0 copied to clipboard
Flutter networking on top of Dio. Request deduplication, typed responses, uploads and downloads with progress, caching, retry and clear errors.
Changelog #
0.3.0 #
Adds upload and download, both with progress callbacks.
upload sends multipart form data with a configurable field name.
download fetches a response as raw bytes with ResponseType.bytes, so a
binary file is not corrupted by text decoding.
Both take and return bytes rather than file paths, deliberately. A path means
dart:io, which does not compile on web, and this package stays on all six
platforms and WebAssembly compatible.
Note that total in a progress callback is -1 until the server sends a
Content-Length header. Check it before dividing for a percentage.
Still two dependencies, dio and crypto. Still 160 out of 160 on pub.dev.
0.2.0 #
Scores 160 out of 160 on pub.dev, supports all six platforms, and is WebAssembly compatible.
Dependencies reduced from eight to two, dio and crypto. Removed
riverpod, provider, flutter_bloc, retry, meta and logger.
logger went because it reaches for dart:io, which costs the package
WebAssembly support; dart:developer does the same job in one line.
Breaking change: removed the Provider, Riverpod, and Bloc adapters
(DeoProviderAdapter, DeoRiverpodAdapter, DeoBlocAdapter, DeoState) and
the provider, riverpod, flutter_bloc, retry, and meta dependencies.
DeoClient no longer takes a position on state management. Wire it into
whatever tool you use, for example:
// Before: the adapter tracked loading/error state for you
final adapter = DeoProviderAdapter(DeoClient());
// After: call the client directly and manage state with your own tool
try {
setState(() => isLoading = true);
final response = await client.get('/users');
} on DeoError catch (e) {
setState(() => error = e.message);
} finally {
setState(() => isLoading = false);
}
- Removed the phantom Android/iOS plugin declaration from
pubspec.yaml. The package had noandroid/orios/folder, so pub.dev was tagging itplatform:android, platform:iosonly. It now correctly supports web, macOS, Windows and Linux as well. - Removed unused dependencies:
provider,retry, andmetahad zero references anywhere inlib/. - Added automatic GET request deduplication. Two identical GET requests
(same path and query parameters) made at the same time now share one
network call instead of firing twice. Opt out per call with
dedupe: false. - Added
getJsonandpostJsonto decode a response straight into a typed model, instead of readingresponse.dataand casting it by hand. A decode failure is wrapped in aDeoErrorso it reads as a model problem, not a network problem. - Fixed
homepage,repository, andissue_trackerto point at the current GitHub account. Dropped thedocumentationlink since the wiki it pointed to does not exist. - Fixed CI: the workflow now uses the Flutter SDK and runs
dart run build_runner buildbefore testing, so it can actually pass.
0.1.3 #
- Updated package description for better clarity
- Improved documentation and examples
- Fixed package metadata for pub.dev compliance
- Prepared for official pub.dev release
0.1.2 #
- Updated dependency versions to latest compatible releases
- Improved compatibility with Flutter 3.18
- Enhanced documentation and examples
0.1.1 #
- Updated package dependencies
- Fixed Git repository integration
- Improved package documentation
0.1.0 Developed by Tisankan #
- Initial release with the following features:
- Concurrent Request Handling
- Comprehensive Error Handling with retry mechanisms
- Request Cancellation
- Interceptors (logging, caching, authentication)
- Customizable Timeout Settings
- Secure Communication with SSL pinning
- State Management Integration (Provider, Riverpod, Bloc)
- Performance Optimization
- Added support for all HTTP methods (GET, POST, PUT, DELETE, PATCH, HEAD)
- Implemented adapters for popular state management solutions
- Added comprehensive test suite
- Created example application demonstrating key features