最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter?Dio?簡(jiǎn)單封裝demo

 更新時(shí)間:2023年07月27日 10:39:36   作者:大蝦啊啊啊  
這篇文章主要為大家介紹了Flutter Dio簡(jiǎn)單封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

 Flutter Dio封裝

import 'package:dio/dio.dart';
import 'package:path_provider/path_provider.dart';
import 'package:znw/app/net/url_config.dart';
class HttpClient {
  late Dio dio;
  static HttpClient instance = HttpClient._internal();
  ///工廠構(gòu)造函數(shù)與普通構(gòu)造函數(shù)的區(qū)別在于,
  ///工廠構(gòu)造函數(shù)可以自定義實(shí)例的創(chuàng)建過(guò)程,并根據(jù)需要返回一個(gè)新的對(duì)象或現(xiàn)有的對(duì)象。
  factory HttpClient() {
    return instance;
  }
  HttpClient._internal() {
    print('構(gòu)造函數(shù)。。。。。。。。。。。。。。');
    dio = Dio();
    dio.options.baseUrl = UrlConfig.BASE_URL;
    dio.options.connectTimeout = 8000;
    dio.interceptors.add(LogInterceptor(responseBody: true)); // 輸出響應(yīng)內(nèi)容體
  }
  /// get請(qǐng)求
  Future<Response?> get(String url, {Map<String, dynamic>? map}) async {
    try {
      var result = await dio.get(url, queryParameters: map);
      return result;
    } catch (e) {
      print('HttManager get e $e }');
      return null;
    }
  }
  ///post請(qǐng)求
  Future<Response?> post(String url, Map<String, dynamic>? map) async {
    try {
      var result = await dio.post(url, queryParameters: map);
      return result;
    } catch (e) {
      print('HttManager post e $e }');
      return null;
    }
  }
  ///上傳文件 fileName 文件名字 fileDir 文件路徑  formData 自定義參數(shù)
  Future<Response?> uploadFile(String url, String? fileName, String fileDir,
      Map<String, dynamic> formData) async {
    try {
      formData['file'] =
          await MultipartFile.fromFile(fileDir, filename: fileName);
      var response = await dio.post(url, data: formData);
      print(response.data);
      return response;
    } catch (e) {
      return null;
    }
  }
  ///下載文件 downLoadPath下載路徑,
  ///fileName 下載之后生成的文件名字,
  ///onProgress 下載進(jìn)度
  ///onFinish 下載完成
  downLoad(
      String downLoadPath,
      String fileName,
      Function(int count, int total) onProgress,
      Function(String path) onFinish,
      Function(DioError e) onError) async {
    final directory = await getExternalStorageDirectory();
    String localPath = directory!.path;
    String savePath = "$localPath/$fileName";
    String apkUrl = downLoadPath;
    ///參數(shù)一 文件的網(wǎng)絡(luò)儲(chǔ)存URL
    ///參數(shù)二 下載的本地目錄文件
    ///參數(shù)三 下載監(jiān)聽(tīng)
    try {
      await dio.download(apkUrl, savePath,
          onReceiveProgress: (received, total) {
        if (total != -1) {
          ///當(dāng)前下載的百分比例
          print("${(received / total * 100).toStringAsFixed(0)}%");
          onProgress(received, total);
        }
      });
      onFinish(savePath);
      print(savePath);
    } on DioError catch (e) {
      // 異常處理代碼
      onError(e);
    }
  }
}

代碼解釋都在注釋里啦~

以上就是Flutter Dio 簡(jiǎn)單封裝demo的詳細(xì)內(nèi)容,更多關(guān)于Flutter Dio封裝的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

会宁县| 麦盖提县| 阳原县| 邯郸市| 宝山区| 阜阳市| 平罗县| 会东县| 马边| 青田县| 玛沁县| 逊克县| 孟州市| 沙河市| 鹤壁市| 湛江市| 牟定县| 黔西| 浦东新区| 青岛市| 潼关县| 若羌县| 墨脱县| 酒泉市| 昌都县| 渝北区| 栖霞市| 诸暨市| 哈巴河县| 嘉黎县| 贵州省| 胶南市| 芜湖市| 三河市| 嘉黎县| 勃利县| 美姑县| 准格尔旗| 苗栗县| 鱼台县| 买车|