Dio 3.0發(fā)布梗搅,支持Flutter Web 和 Http/2.0

Flutter 一周前發(fā)布了1.9 版本泪掀,其中最大特性是將Flutter Web合入了主分支。而今天垦搬,Dio 也正式發(fā)布了3.0.0,該版本最大的特性是支持Flutter Web 和 Http/2.0。

升級提示:由于Dio 3.0需要支持Flutter Web百炬,需要對代碼進(jìn)行較大的重構(gòu),所以并不能完全向下兼容色迂,2.1版本用戶可參考 3.0升級指南 给猾。

支持Flutter Web

開發(fā)者只需要將Flutter升級到1.9或更新的dev版本,然后將Dio升級到最新的3.x即可支持Flutter Web即可方篮。

Http/2.0支持

Http/2.0 有鏈接復(fù)用羔砾、頭部壓縮申鱼、二進(jìn)制傳輸猴鲫、服務(wù)端推送等重多特性。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參數(shù)迂求。ConnectionManager 主要職責(zé)是管理鏈接晃跺,是Http/2.0中鏈接復(fù)用策略的實(shí)現(xiàn)載體。官方提供了一個默認(rèn)的ConnectionManager 哼审,它的策略是同一個域名下的請求共享一個Socket鏈接孕豹,當(dāng)請求完成時,連接默認(rèn)繼續(xù)保持15秒励背,開發(fā)者可以通過idleTimeout來自定義保持時間。開發(fā)者提供自己的ConnectionManager來自定義鏈接復(fù)用策略址儒。

另外,Http2Adapter內(nèi)部已經(jīng)默認(rèn)處理了重定向莲趣,我們可以通過以下代碼驗(yàn)證:

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

可以看到我們在大陸請求google時進(jìn)行了三次重定向饱溢!

其它更新

  • FormData 支持嵌套。
  • 刪除了UploadFileInfo類绩郎,引入了MultipartFile類;MultipartFile類不僅支持通過文件來構(gòu)造上傳頭塊肋杖,也支持通過Stream、Byte數(shù)組状植、字符串來構(gòu)造。
  • 將CookieManager抽離成了單獨(dú)的包津畸;這是因?yàn)樵贔lutter web中不需要手動管理Cookie(瀏覽器會自動管理),因此將其抽為單獨(dú)的插件按需引入會更合理吩案。
  • 請求取消后,取消Error可以入隊(duì)攔截器隊(duì)列(2.1中取消的異常是直接拋給用戶處理)徘郭。
  • 代碼優(yōu)化:API標(biāo)準(zhǔn)化靠益、語義化胧后;對核心代碼進(jìn)行了全部重構(gòu)。

詳情請參考:https://github.com/flutterchina/dio 壳快。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镇草,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梯啤,更是在濱河造成了極大的恐慌,老刑警劉巖因宇,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異察滑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贺辰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來先舷,“玉大人滓侍,你說我怎么就攤上這事×冒剩” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵夕冲,是天一觀的道長。 經(jīng)常有香客問我泣栈,道長,這世上最難降的妖魔是什么南片? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮薪缆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拣帽。我一直安慰自己,他們只是感情好减拭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布灾票。 她就那樣靜靜地躺著刊苍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪濒析。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天婴氮,我揣著相機(jī)與錄音盾致,去河邊找鬼。 笑死庭惜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的护赊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼节吮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了透绩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雏胃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后志鞍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體固棚,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呜师,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了祈争。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片角寸。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡亿柑,死狀恐怖橄杨,靈堂內(nèi)的尸體忽然破棺而出乡摹,到底是詐尸還是另有隱情瞬痘,我是刑警寧澤框全,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站喘沿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窄赋。R本人自食惡果不足惜忆绰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一青柄、第九天 我趴在偏房一處隱蔽的房頂上張望预侯。 院中可真熱鬧双戳,春花似錦糜芳、人聲如沸峭竣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽做院。三九已至,卻和暖如春郁竟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讥蟆。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留质况,地道東北人结榄。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像视哑,于是被迫代替她去往敵國和親誊涯。 傳聞我的和親對象是個殘疾皇子醋拧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容