欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter?Dio?簡單封裝demo

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

 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();
  ///工廠構造函數(shù)與普通構造函數(shù)的區(qū)別在于,
  ///工廠構造函數(shù)可以自定義實例的創(chuàng)建過程,并根據(jù)需要返回一個新的對象或現(xiàn)有的對象。
  factory HttpClient() {
    return instance;
  }
  HttpClient._internal() {
    print('構造函數(shù)。。。。。。。。。。。。。。');
    dio = Dio();
    dio.options.baseUrl = UrlConfig.BASE_URL;
    dio.options.connectTimeout = 8000;
    dio.interceptors.add(LogInterceptor(responseBody: true)); // 輸出響應內容體
  }
  /// get請求
  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請求
  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 下載進度
  ///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)絡儲存URL
    ///參數(shù)二 下載的本地目錄文件
    ///參數(shù)三 下載監(jiān)聽
    try {
      await dio.download(apkUrl, savePath,
          onReceiveProgress: (received, total) {
        if (total != -1) {
          ///當前下載的百分比例
          print("${(received / total * 100).toStringAsFixed(0)}%");
          onProgress(received, total);
        }
      });
      onFinish(savePath);
      print(savePath);
    } on DioError catch (e) {
      // 異常處理代碼
      onError(e);
    }
  }
}

代碼解釋都在注釋里啦~

以上就是Flutter Dio 簡單封裝demo的詳細內容,更多關于Flutter Dio封裝的資料請關注腳本之家其它相關文章!

相關文章

  • Android串口通信apk源碼詳解(附完整源碼)

    Android串口通信apk源碼詳解(附完整源碼)

    這篇文章主要介紹了Android串口通信apk源碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Android事件與手勢操作詳解

    Android事件與手勢操作詳解

    現(xiàn)在程序都是通過事件實現(xiàn)人機交互的。事件:用于對圖形界面的操作,有物理按鍵事件和觸摸屏事件兩大類。在Android組件中提供了事件處理的相關方法,如在View類中提供onTouchEvent()方法重寫觸摸屏事件,setOnTouchListener()方法為組件設置監(jiān)聽器來處理觸摸屏事件
    2022-12-12
  • Android5.0中JobScheduler的使用方法

    Android5.0中JobScheduler的使用方法

    Android 5.0中如何使用JobScheduler API,這篇文章主要介紹了Android5.0中JobScheduler的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 解析Android開發(fā)優(yōu)化之:軟引用與弱引用的應用

    解析Android開發(fā)優(yōu)化之:軟引用與弱引用的應用

    Java從JDK1.2版本開始,就把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用,本篇文章重點介紹一下軟引用和弱引用
    2013-05-05
  • Android實現(xiàn)圖片點擊爆炸效果

    Android實現(xiàn)圖片點擊爆炸效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片點擊爆炸效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • android 6.0下webview的定位權限設置方法

    android 6.0下webview的定位權限設置方法

    今天小編就為大家分享一篇android 6.0下webview的定位權限設置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Android WebView或手機瀏覽器打開連接問題解決辦法總結

    Android WebView或手機瀏覽器打開連接問題解決辦法總結

    這篇文章主要介紹了Android WebView或手機瀏覽器打開連接問題解決辦法總結的相關資料,需要的朋友可以參考下
    2017-03-03
  • Android實現(xiàn)加載圈

    Android實現(xiàn)加載圈

    這篇文章主要為大家詳細介紹了Android實現(xiàn)加載圈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解Android?Flutter中SliverAppBar的使用教程

    詳解Android?Flutter中SliverAppBar的使用教程

    對于一個APP來說,肯定會有一個AppBar,這個AppBar一般包含了APP的導航信息等。在lutter已經(jīng)為我們提供了一個非常強大的AppBar組件,這個組件叫做SliverAppBar。本文就來聊聊它的具體使用吧
    2023-01-01
  • 詳解kotlin中::雙冒號的使用

    詳解kotlin中::雙冒號的使用

    在?Kotlin?中?,?::?雙冒號操作符?的作用是獲取類,對象,函數(shù),屬性的?類型對象引用,這篇文章主要介紹了詳解kotlin中::雙冒號的使用,需要的朋友可以參考下
    2023-04-04

最新評論