NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #168 most downloaded on pub.dev
A powerful HTTP networking package, supports Interceptors, Aborting and canceling a request, Custom adapters, Transformers, etc.
Last release 1 months ago
04 Sep 2026
Release timing varies
gaps range from 3 weeks to 6 months
Nearly every release is documented
notes for 58 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
8 years old
151 releases · first in 2018
Fix response stream not propagating backpressure to the underlying socket. When a consumer paused the stream, the source subscription was never paused
badCertificateCallback pinning test deterministic by pinning aNoSuchMethodError when using a class that implements Interceptorextends Interceptor. The interceptor pipeline was calling privateInterceptor subclasses, breaking anyAdd query and queryUri convenience methods for the HTTP QUERY method defined in RFC 10008, which allows a request body for safe, idempotent queries.
query and queryUri convenience methods for the HTTP QUERY method defined in RFC 10008,FusedTransformer (the default transformer) throwing a FormatExceptionresponseDecoder is set. It nowSyncTransformer andBackgroundTransformer.One column per quarter.
Fix FormData.readAsBytes excessive memory usage with large payloads by replacing the O(n²) reduce +spread approach with a pre-allocated Uint8List .
FormData.readAsBytes excessive memory usage with large payloads by replacing the O(n²) reduce+spread approach with a pre-allocated Uint8List.HttpException: Connection closed before full header was received being reported as DioExceptionType.unknown.transformTimeout to bound long-running response transformations, including background JSON decoding.FormData.clone() dropping boundaryName and camelCaseContentDisposition, so a retried multipart request now keeps the original options instead of silently falling back to the defaults.QueuedInterceptor stalling its queue forever when the active request is cancelled while its callback is still pending (never calls next/resolve/reject), which blocked every subsequent request routed through the interceptor.ErrorInterceptorHandler.reject(..., true) not continuing to following error interceptors in queued interceptors.Fixes kIsWeb across different Flutter SDKs.
kIsWeb across different Flutter SDKs.httpVersion in Response.extra when using IOHttpClientAdapter.Add requestUrl and responseUrl parameters to LogInterceptor for more precise control over URL logging.
requestUrl and responseUrl parameters to LogInterceptor for more precise control over URL logging.QueuedInterceptor hanging indefinitely when interceptor callbacks throw synchronous exceptions.Do not allow updating the error field after a cancel token has canceled.
Interceptors.package:mime to help determine the content-type of MultipartFile base on the provided filename.Raise the version constraint of dio_web_adapter.
dio_web_adapter.Update comments and strings with MultipartFile.
MultipartFile.FormData.clone().FileAccessMode in Dio.download and Dio.downloadUri to change download file opening mode.ListParam equality by using the DeepCollectionEquality.DioException globally and locally.Dio.clone to reuse base options, client adapter, interceptors, and transformer,
in a new Dio instance.Graceful handling of responses with nonzero Content-Length, Content-Type that is json, and empty payload.
Content-Length, Content-Type that is json, and empty payload.
null.Supports the WASM environment. Users should upgrade the adapter with dart pub upgrade or flutter pub upgrade to use the WASM-supported version.
dart pub upgrade or flutter pub upgrade to use the WASM-supported version.Raise the min Dart SDK version to 2.18.0.
DioExceptionType.badCertificate.DioMediaType for http_parser's MediaType.MultipartFile.fromBytes.package:dio_web_adapter.InterceptorState.toString().CancelToken got canceled before making requests,
throws the exception directly rather than cut actual HTTP requests afterward.MediaType parse exception in Transformer.isJsonMimeType.CancelToken.Fix WASM compile errors after moving the web implementation to dio_web_adapter.
dio_web_adapter.Remove sockets detach in IOHttpClientAdapter.
IOHttpClientAdapter.FormData.boundaryName instead of the default --dio-boundary-.Fix type promotions for the UTF-8 encoder on previous Dart SDKs.
Fix receiveTimeout throws exception after the request has been cancelled.
receiveTimeout throws exception after the request has been cancelled.StateError for handler's duplicated calls.Revert "Catch sync/async exceptions in interceptors' handlers".
Provide fix suggestions for dart fix.
dart fix.receiveTimeout for streamed responses.IOHttpClientAdapter.IOHttpClientAdapter.baseUrl on the Web platform.Improve SyncTransformer's stream transform.
SyncTransformer's stream transform.preserveHeaderCase flag through options.receiveTimeout for the IOHttpClientAdapter.receiveTimeout for the download method of DioForNative.Raise warning for Maps other than Map when encoding request data.
Maps other than Map<String, dynamic> when encoding request data.ResponseDecoder and RequestEncoder to be async.Duration.zero timeouts.Fix failing requests throw DioExceptions with .unknown instead of .connectionError on SocketException.
DioExceptions with .unknown instead of .connectionError on SocketException.options argument for Options.compose.BrowserHttpClientAdapter.GET request in web.sendTimeout and onSendProgress with an empty request body.receiveTimeout not working correctly on web.ImplyContentTypeInterceptor can be removed by Interceptors.clear() by default.Revert removed download for DioMixin.
download for DioMixin.Dio.download not cleaning the file on data handling error.Deprecate MultipartFile constructor in favor MultipartFile.fromStream.
MultipartFile from FormData with regression test.MultipartFile constructor in favor MultipartFile.fromStream.FormData.clone.Remove http from dev_dependencies.
http from dev_dependencies.MultipartFile from FormData.ResponseType.json.Revert changes to handling of List body data.
List<int> body data.- Fix changelog on pub.dev.
Deprecate DioError in favor of DioException.
LogInterceptor prints in DEBUG mode (when the assertion is enabled) by default.DioError in favor of DioException.IOHttpClientAdapter.onHttpClientCreate Repeated callsIOHttpClientAdapter.onHttpClientCreate has been deprecated and is scheduled for removal in
Dio 6.0.0 - Please use the replacement IOHttpClientAdapter.createHttpClient instead.CancelToken no longer closes and re-creates HttpClient for each request when IOHttpClientAdapter is used.receiveTimeout.List<int>/Uint8List).Fix DioErrorType deprecation hint.
DioErrorType deprecation hint.Allow FormData to send a null entry value as an empty string.
FormData to send a null entry value as an empty string.Revert changes to CancelToken.cancel() behavior, as a result the DioError provided by the CancelToken.cancelError does not contain useful information
CancelToken.cancel() behavior, as a result the DioError
provided by the CancelToken.cancelError does not contain useful information
when the token was not used with a request.ListFormat being used for comparison during encoding of FormData
and application/x-www-form-urlencoded, resulting in potential wrong output encoding
for ListFormat.multi and ListFormat.multiCompatible since Dio 4.0.x.Options.listFormat when encoding x-www-url-encoded content.Fix double-completion when using connectionTimeout on web platform.
connectionTimeout on web platform.FormData encoding regression for maps with dynamic keys, introduced in 5.0.3.DioMixin functions as @internal.DioError.stackTrace non-nullable.DioError.stackTrace always points to the correct call site.Imply List as JSON content in ImplyContentTypeInterceptor.
List<Map> as JSON content in ImplyContentTypeInterceptor.FormData encoding for collections and objects.Improve code formats according to linter rules.
DioErrorType.cancel in Interceptors.Add ImplyContentTypeInterceptor as a default interceptor.
ImplyContentTypeInterceptor as a default interceptor.Headers.multipartFormDataContentType for headers usage.withCredentials in browser_adapter.dart.Raise the min Dart SDK version to 2.15.0 to support BackgroundTransformer.
BackgroundTransformer.Dio.transformer from DefaultTransformer to BackgroundTransformer.FormData.savePath.data in all request methods.HttpClientAdapter can now be instantiated by doing
dio.httpClientAdapter = HttpClientAdapter();.ValidateCertificate to handle certificate pinning better.Content-Disposition header case sensitivity.utf-8 in Headers content type constants has been removed.BaseOptions.setRequestContentTypeWhenNoPayload has been removed.DioErrors. There are now more cases in which the inner original stacktrace is supplied.HttpClientAdapter must now be implemented instead of extended.dart:io platforms can now be imported via import 'package:dio/io.dart';.
Classes specific to web can be imported via import 'package:dio/browser.dart';.connectTimeout, sendTimeout, and receiveTimeout are now Durations.- fix #1452
require Dart 2.12.1 which fixes exception handling for secure socket connections
2.12.1 which fixes exception handling for secure socket connections (#45214)BrowserHttpClientAdapter canceled hangsNothing published for this version
Fix fetching null data in a response
- fix #1311
- Add QueuedInterceptor - merge #1316 #1317
Nothing published for this version
merge pr #1177 #1196 #1205 #1224 #1225 #1227 #1256 #1263 #1291
stable version
stable version
- fix #1091 , #1089 , #1087
- fix #1082 and # 1076
Interceptors: Add handler for Interceptor APIs which can specify the subsequent interceptors processing logic more finely (whether to skip them or not
Interceptors: Add handler for Interceptor APIs which can specify
the subsequent interceptors processing logic more finely (whether to skip them or not).
- fix #1074
- fix #1070
- support ListParam
- fix #1060
rename CollectionFormat to ListFormat
multiCompatible to multiadd CollectionFormat configuration in Options
CollectionFormat configuration in Optionsfetch API for DioNothing published for this version
fix #877 'dio.interceptors.errorLock.lock()'
- Add test cases
- Code style improvement
Nothing published for this version
Merge #574 : fix upload image header error, support both oss and other server
- revert #562, and fixed #566
- merge #557 #531
Your coding agent can read these notes before it upgrades. Set up the MCP server →