最新国产好看的视频,伊人天堂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)建過程,并根據(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)聽
    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)論

买车| 镇坪县| 邓州市| 什邡市| 旅游| 白城市| 潞西市| 景谷| 保山市| 石柱| 曲麻莱县| 皮山县| 柏乡县| 阿荣旗| 淄博市| 宁波市| 铜陵市| 中超| 巧家县| 长宁县| 上思县| 明星| 北碚区| 眉山市| 石嘴山市| 乌兰浩特市| 台州市| 星子县| 布尔津县| 博乐市| 阳山县| 英超| 阳西县| 永善县| 许昌县| 二连浩特市| 巩留县| 永仁县| 石家庄市| 水富县| 合肥市|