当前位置: 首页 > news >正文

Flutter网络请求

1、导入网络插件 dio: ^5.3.4
2、引入插件import ‘package:dio/dio.dart’;
3、代码

/// 下载进度回调typedefOnDownloadProgress=voidFunction(double progressPercent);// progressPercent: 0~100/// 下载成功回调typedefOnDownloadSuccess=voidFunction(StringfilePath);/// 下载失败回调typedefOnDownloadError=voidFunction(Objecterror,StackTrace?stackTrace);classNetworkMange{staticfinalNetworkMange_instance=NetworkMange._internal();factoryNetworkMange()=>_instance;lateDiodio;NetworkMange._internal(){BaseOptionsoptions=BaseOptions(baseUrl:APIUtil.getBaseIpUrl(),connectTimeout:constDuration(seconds:60),// 连接超时receiveTimeout:constDuration(seconds:40),// 接收超时headers:{'Content-Type':'application/json',// 默认请求头},);dio=Dio(options);}Future<void>downloadFile(Stringurl,StringfilePath,{OnDownloadProgress?onProgress,OnDownloadSuccess?onSuccess,OnDownloadError?onError,})async{try{awaitdio.download(url,filePath,onReceiveProgress:(received,total){if(total!=-1){double progress=(received/total)*100;LogUtil.d("下载进度:${progress.toStringAsFixed(2)}%");onProgress?.call(progress);}},deleteOnError:true);onSuccess?.call(filePath);}catch(e,stack){LogUtil.e('==错误信息===e:$e');onError?.call(e,stack);}}/*文件上传*/Future<Response>uploadFile(Stringpath,{requiredFormDatadata,Map<String,dynamic>?header,voidFunction(int,int)?progress,})async{try{finaloptions=_mergeHeaders(header);finalresponse=awaitdio.post(path,data:data,options:options,onSendProgress:progress,);returnresponse;}catch(e){LogUtil.e('=uploadFile==报错了:$e');rethrow;}}// 私有方法:合并默认头与自定义头Options_mergeHeaders(Map<String,dynamic>?customHeaders){finalmergedHeaders=<String,dynamic>{};mergedHeaders.addAll(dio.options.headers);if(customHeaders!=null){mergedHeaders.addAll(customHeaders);}returnOptions(headers:mergedHeaders);}Future<Response>getRequest(Stringpath,{Map<String,dynamic>?queryParameters,Map<String,dynamic>?headers,})async{try{finaloptions=headers!=null?Options(headers:headers):null;finalresponse=awaitdio.get(path,queryParameters:queryParameters,options:options,);returnresponse;}catch(e){LogUtil.e('GET Request Error:${e}');rethrow;}}Future<Map<String,dynamic>?>postRequestResponseMap(Stringpath,{dynamicdata,Map<String,dynamic>?headers,})async{try{finaloptions=headers!=null?Options(headers:headers):null;LogUtil.d('===options==:$options,path:$path');finalresponse=awaitdio.post(path,data:data,options:options);Map<String,dynamic>jsonMap;if(response.dataisMap<String,dynamic>){jsonMap=response.data;}elseif(response.dataisString){jsonMap=jsonDecode(response.data);}else{throwException('返回数据报错 response type:${response.data.runtimeType}');}returnjsonMap;}catch(e){LogUtil.e('POST Request Error:${e}');rethrow;}}//post请求Future<Response>postRequest(Stringpath,{dynamicdata,Map<String,dynamic>?headers,})async{try{finaloptions=headers!=null?Options(headers:headers):null;finalresponse=awaitdio.post(path,data:data,options:options);returnresponse;}catch(e){LogUtil.e('POST Request Error:${e}');rethrow;}}}

`

http://www.zskr.cn/news/1491643.html

相关文章:

  • 从城市交通到微服务调用链:介数中心度如何帮你发现系统中的“脆弱咽喉”?
  • 荆州市黄金回收本地靠谱店铺指南+白银回收+铂金回收+彩金回推荐收门店 及地联系方式址推荐 - 盛世金银回收
  • 不露脸怎么做口播视频?5款数字人工具实测对比
  • 华硕笔记本性能优化革命:G-Helper轻量控制工具完全指南
  • 4万Star的paperless-ngx,把纸质文档变成可全文搜索的数字档案
  • 2025-2026年北京群升北亦门业电话查询:防爆泄爆门窗采购前需核实资质与检测报告 - 品牌推荐
  • 3步打造你的专属AI播客制作人:让PDF文档开口说话
  • 3分钟快速上手:G-Helper华硕笔记本轻量级控制工具完整指南
  • 避开CubeMX的‘红线’:手把手教你代码修改ADC时钟分频,实现STM32F103的ADC超频采样
  • 【课程设计/毕业设计】基于微信小程序的漫画小说阅读系统基于Springboot+微信小程序的个性化漫画阅读推荐系统的设计与实现【附源码、数据库、万字文档】
  • 数字孪生技术正在开启智慧世界的新篇章
  • 100皇后问题的遗传算法实操指南:从崩溃到收敛
  • 2026 Python开发新范式:AI系统工程与DevOps原生性融合
  • 新人报道~
  • 26k Star的Go测试库Testify:断言、Mock、Suite一站搞定
  • 重庆主城六区黄金回收门店精选测评 - 润富黄金回收
  • 绵阳高新区卖黄金注意事项 靠谱回收门店推荐 - 润富黄金回收
  • 保姆级教程:拆解蓝牙调试器的数据包协议,用STC8单片机实现与手机App的稳定通信(附完整代码)
  • C# WinForm版开心消消乐完整工程:含源码、资源、存档与SQLite支持
  • BetterNCM插件管理器:3分钟搞定网易云音乐插件安装的终极方案
  • 白银市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989
  • Python 3.9核心升级解析:GenericAlias、字典合并与zoneinfo迁移指南
  • 从爬虫到官方导出:我的4000张语义分割数据‘解救’之路与飞桨EasyDL更新评测
  • C# WinForm 与 VP 二次开发
  • 2026年Q2长沙K金回收技术要点及靠谱渠道解析:长沙钻石回收/长沙铂金回收/长沙银元回收/长沙首饰回收/长沙高档礼品回收/选择指南 - 优质品牌商家
  • 2026年石家庄空调移机选对=省心 大为搬家推荐 - 本地品牌推荐
  • 模型无关AI系统:构建可演进的AI服务契约体系
  • LLM开发实战:QLoRA微调与GGUF量化部署指南
  • 乌鲁木齐黄金回收 卖黄金怎么不被坑 实用避坑技巧分享 - 润富黄金回收
  • c++的类型转换