Флаттерс выпущен версия 1.9 Неделю назад, а самая большая функция - это интеграция трепетания в главной ветке. И сегодня,DioТакже официально выпущена версия 3.0.0, самой большой особенностью этой версии является поддержка Flutter Web и Http/2.0.
Совет по обновлению: поскольку Dio 3.0 должен поддерживать Flutter Web, код необходимо реорганизовать, чтобы он не был полностью обратно совместим.Пользователи версии 2.1 могут обратиться к3.0 Руководство по обновлению.
Веб-поддержка Flutter
Разработчикам нужно только обновить Flutter до версии 1.9 или выше, а затем обновить Dio до последней версии 3.x для поддержки Flutter Web.
Поддержка HTTP/2.0
Http/2.0 имеет несколько функций, таких как мультиплексирование каналов, сжатие заголовков, двоичная передача и отправка на стороне сервера. После версии Dio 3.0 официальный предоставляетdio_http2_adapterПлагин (HttpClientAdapter) для поддержки Http/2.0. Вот официальный пример:
import 'package:dio/dio.dart';
import 'package:dio_http2_adapter/dio_http2_adapter.dart';
main() async {
var dio = Dio()
..options.baseUrl = "https://google.com"
..interceptors.add(LogInterceptor())
..httpClientAdapter = Http2Adapter(
ConnectionManager(idleTimeout: 10000),
);
Response<String> response;
response = await dio.get("/?xx=6");
print(response.data);
}
Как видите, вам нужно только настроить Http2Adapter. Стоит отметить, что для Http2Adapter требуется параметр ConnectionManager. Основной обязанностью ConnectionManager является управление ссылками, и он является носителем реализации стратегии повторного использования ссылок в Http/2.0. Официальный предоставляет ConnectionManager по умолчанию. Его стратегия заключается в том, что запросы под одним и тем же доменным именем совместно используют соединение Socket. Когда запрос выполнен, соединение по умолчанию продолжает поддерживаться в течение 15 секунд. Разработчики могут настроить время хранения с помощью idleTimeout. Разработчики предоставляют свой собственный ConnectionManager для настройки стратегии повторного использования ссылок.
Кроме того, Http2Adapter уже обрабатывает перенаправление по умолчанию, мы можем проверить это с помощью следующего кода:
response.redirects.forEach((e){
print("redirect: ${e.statusCode} ${e.location}");
});
выход:
redirect: 301 https://www.google.com/?xx=6
redirect: 302 https://www.google.com.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=https://www.google.com.hk/%3Fxx%3D6&ust=1568810110125304&usg=AOvVaw0YbFhKFoslI0LPOPFcekGy
redirect: 302 https://www.google.com.hk/?xx=6
Видно, что мы сделали три редиректа при запросе гугла на материке!
другие обновления
- FormData поддерживает вложенность.
- удален
UploadFileInfoкласс, представилMultipartFile
Добрый;MultipartFile
Класс поддерживает не только построение блоков заголовков загрузки из файлов, но и построение потоков, массивов байтов и строк. - CookieManager вынесен в отдельный пакет, это связано с тем, что нет необходимости вручную управлять куками во Flutter web (браузер будет управлять им автоматически), поэтому разумнее извлечь его как отдельный плагин и вводить по требованию.
- После отмены запроса отмененная ошибка может быть поставлена в очередь в очередь перехватчика (отмененное исключение в версии 2.1 передается пользователю для обработки напрямую).
- Оптимизация кода: стандартизация API и семантика, все основные коды подверглись рефакторингу.
Для получения подробной информации см.:GitHub.com/флаттер доение….