advanced_api_client 1.0.2 copy "advanced_api_client: ^1.0.2" to clipboard
advanced_api_client: ^1.0.2 copied to clipboard

Production-ready Flutter/Dart API client built on Dio with authentication, automatic token refresh, retry interceptor, file uploads, global error handling, and clean architecture.

Changelog #

All notable changes to this package will be documented in this file.


1.0.2 #

🚀 Improvements #

  • Improved global session expiration handling without requiring BuildContext.
  • Improved retry safety for multipart uploads after token refresh.
  • Enhanced FormData rebuilding logic to prevent finalized stream reuse issues.
  • Improved logging clarity for refresh flow, retries, and upload progress.
  • Refactored internal _request() logic for better readability and maintainability.

🛠 Bug Fixes #

  • Fixed rare race condition when multiple requests attempted token refresh simultaneously.
  • Fixed edge case where CancelToken was not passed correctly to retried upload requests.
  • Fixed retry request headers not preserving original request headers.

Added #

  • Better production-safe retry mechanism for requests with FormData.
  • Improved upload task cancellation support using CancelToken.
  • Support for dynamic body rebuild for retried multipart requests.
  • Additional debug logs for retry attempts and token refresh flow.

1.0.1 #

🛠 Bug Fixes #

  • Fixed _FormData already finalized error when retrying uploads after token refresh.
  • Resolved bodyBuilder missing issue in RefreshConfig for dynamic refresh API bodies.
  • Corrected named parameter mismatches in _request() and Dio request options.
  • Prevented token refresh infinite loops on concurrent requests.

Added #

  • Support for bodyBuilder in RefreshConfig for dynamic refresh request bodies.
  • Ability to fetch user_id or other dynamic data from SharedPreferences during token refresh.
  • Optional CancelToken support per upload task for better upload management.
  • Improved logging for upload progress and retry actions.
  • Dynamic handling of multiple file uploads with different field names.
  • Added SharedPrefsTokenStorage example for storing token and extra data separately.

Improved #

  • Safer retry mechanism for POST/PUT requests using FormData after token refresh.
  • Cleaner interceptor logs and separation between auth and upload flows.
  • More robust _request() core function with error parsing improvements.
  • Improved production safety and scalability of AdvancedApiClient.

1.0.0 #

🚀 Production Release #

Added #

  • Production-ready architecture
  • Centralized AdvancedApiClient
  • Robust _request() core handler
  • Global error handling via ApiConfig.onError
  • Automatic token refresh mechanism
  • Retry interceptor with timeout & connection retry support
  • Session termination with request cancellation
  • Single file upload support
  • Multiple file upload support (same field)
  • Multiple file upload support (dynamic field names)
  • Improved error parsing with ApiException
  • Debug logging (enabled in debug mode only)
  • Custom Dio interceptor support
  • Safe singleton initialization
  • Lazy initialization option

Improved #

  • Cleaner internal request handling
  • Stronger error mapping for DioException
  • Better file existence validation
  • More stable cancel token management
  • Improved production safety & scalability

0.0.1 #

Added #

  • Initial release
  • GET, POST, PUT, PATCH, DELETE requests
  • Token-based authentication
  • Token refresh support
  • File upload support
  • Pagination support
  • Custom interceptors
  • Example Flutter app demonstrating usage
0
likes
150
points
56
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Production-ready Flutter/Dart API client built on Dio with authentication, automatic token refresh, retry interceptor, file uploads, global error handling, and clean architecture.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

dio, flutter, shared_preferences

More

Packages that depend on advanced_api_client