Flutter跨平臺移動端開發(fā)丨封裝網(wǎng)絡(luò)請求框架 dio

dio 框架介紹

A powerful Http client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc

基于 Dart 語言編寫的強(qiáng)大的網(wǎng)絡(luò)請求框架铃辖,支持?jǐn)r截器忠售,全局配置,F(xiàn)ormData昌罩,請求取消肄方,文件下載稚矿,超時(shí)監(jiān)聽等

Github Dio 主頁


dio 項(xiàng)目應(yīng)用

首先在 pubspec.yaml 文件中添加 dio 庫依賴并 Packages get

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  dio: ^2.1.5

然后封裝基于 dio 框架的 http 請求工具類

import 'package:dio/dio.dart';

/**
 * @des Dio 網(wǎng)絡(luò)請求框架工具類
 * @author liyongli 20190523
 * */
class DioHttpUtils{

  // 服務(wù)器接口地址公有部分
  final _httpBaseUrl = "https://www.xxx...";

  // 請求超時(shí)時(shí)長
  final _httpConnectTimeout = 10000;

  // 接收超時(shí)時(shí)長
  final _hpptReceiveTimeout = 10000;

  // 本類實(shí)例
  static DioHttpUtils _dioHttpUtilsObject;

  // 請求實(shí)例
  static Dio _dioObject;

  // 參數(shù)實(shí)例
  static BaseOptions _baseOptionsObject;

   /// 單例訪問
  static DioHttpUtils getInstance(){
    if(null == _dioHttpUtilsObject){
      _dioHttpUtilsObject = new DioHttpUtils._();
    }
    return _dioHttpUtilsObject;
  }

  /// 私有化構(gòu)造(單例模式)
  DioHttpUtils._(){

    // 初始化 http 基本設(shè)置
    _baseOptionsObject =new BaseOptions(
        baseUrl: _httpBaseUrl,
        connectTimeout: _httpConnectTimeout,
        receiveTimeout: _hpptReceiveTimeout,
        headers: {}
    );

    // 定義請求實(shí)例
    _dioObject = new Dio(_baseOptionsObject);

    // 添加請求事件監(jiān)聽
    _dioObject.interceptors.add(InterceptorsWrapper(

      // 攔截請求發(fā)送事件(如添加 token掏熬、versionCode搀崭、platformType 等)
      onRequest: (RequestOptions options){
        // do something
        return options;
      },

      // 攔截請求響應(yīng)事件(如數(shù)據(jù)重組叨粘,便于業(yè)務(wù)代碼中快速處理調(diào)用)
      onResponse: (Response response){
        // do something
        return response;
      },

      // 攔截請求失敗事件(如添加統(tǒng)一的錯(cuò)誤提示 或 統(tǒng)一的錯(cuò)誤處理邏輯等)
      onError: (DioError error){
        return error;
      }

    ));
  }

  /// get 請求
  get(url,{ options, cancelToken, parameters=null}) async {
    Response response;
    try{
      response = await _dioObject.get(url, queryParameters:parameters, cancelToken:cancelToken);
    }on DioError catch(e){
      if(CancelToken.isCancel(e)){
        print('請求取消:' + e.message);
      }else{
        print('請求錯(cuò)誤:$e');
      }
    }
    return response.data;
  }

  /// post請求
  post(url,{ options, cancelToken, parameters=null}) async {
    Response response;
    try{
      response = await _dioObject.post(url, queryParameters:parameters !=null ? parameters : {}, cancelToken:cancelToken);
      print(response);
    }on DioError catch(e){
      if(CancelToken.isCancel(e)){
        print('請求取消:' + e.message);
      }else{
        print('請求錯(cuò)誤:$e');
      }
    }
    return response.data;
  }

}

調(diào)用方式

  DioHttpUtils.getInstance().get("url", parameters: "");
  DioHttpUtils.getInstance().post("url", parameters: "");

本篇到此完結(jié),更多 Flutter 跨平臺移動端開發(fā) 原創(chuàng)內(nèi)容持續(xù)更新中~

期待您 關(guān)注 / 點(diǎn)贊 / 收藏 向著 大前端工程師 晉級瘤睹!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末升敲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轰传,更是在濱河造成了極大的恐慌驴党,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件获茬,死亡現(xiàn)場離奇詭異港庄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锦茁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門攘轩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人码俩,你說我怎么就攤上這事度帮。” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵笨篷,是天一觀的道長瞳秽。 經(jīng)常有香客問我,道長率翅,這世上最難降的妖魔是什么练俐? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮冕臭,結(jié)果婚禮上腺晾,老公的妹妹穿的比我還像新娘。我一直安慰自己辜贵,他們只是感情好悯蝉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著托慨,像睡著了一般鼻由。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厚棵,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天蕉世,我揣著相機(jī)與錄音,去河邊找鬼婆硬。 笑死狠轻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的柿祈。 我是一名探鬼主播哈误,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼躏嚎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起菩貌,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤卢佣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后箭阶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虚茶,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年仇参,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘹叫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诈乒,死狀恐怖罩扇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤喂饥,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布消约,位于F島的核電站,受9級特大地震影響员帮,放射性物質(zhì)發(fā)生泄漏或粮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一捞高、第九天 我趴在偏房一處隱蔽的房頂上張望氯材。 院中可真熱鬧,春花似錦硝岗、人聲如沸氢哮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽命浴。三九已至,卻和暖如春贱除,著一層夾襖步出監(jiān)牢的瞬間生闲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工月幌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碍讯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓扯躺,卻偏偏與公主長得像捉兴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子录语,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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