当前位置: 首页 > 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.jsqmd.com/news/979916/

相关文章:

  • 从城市交通到微服务调用链:介数中心度如何帮你发现系统中的“脆弱咽喉”?
  • 2026北京优质搬家公司推荐榜:北京搬家公司、北京收纳整理公司、北京日式搬家公司、北京本地搬家、北京长途搬家公司选择指南 - 优质品牌商家
  • 不露脸怎么做口播视频?5款数字人工具实测对比
  • 别再让网卡拖慢你的服务器!手把手教你用RPS/RFS优化单队列网卡性能(附一键脚本)
  • 无锡黄金回收哪家靠谱 本地靠谱实体门店汇总 - 润富黄金回收
  • 大厂笔试除了算法还考啥?性格测试、情商题、技术问答全解析(附准备清单)
  • 华硕笔记本性能优化革命:G-Helper轻量控制工具完全指南
  • 立创EDA手动拼板实战:当自带功能不够用时,如何精准复制并重建铺铜?
  • 4万Star的paperless-ngx,把纸质文档变成可全文搜索的数字档案
  • Python 爬虫项目 Scrapy 链接提取器精准筛选目标网页 URL
  • 主动学习实战指南:NLP数据冷启动的高效构建方法
  • 3步打造你的专属AI播客制作人:让PDF文档开口说话
  • 2025-2026年北京群升北亦门业电话查询:防爆泄爆门窗采购前需核实资质与检测报告 - 品牌推荐
  • 彩票开奖数据实时可视化大屏源码包(Python采集+PHP接口+JS动态渲染+MySQL存储)
  • 考公资料整理合集:系统性备考资源与高效学习路径
  • FusionCompute CNA 8.0.0在VMware Workstation上的完整配置清单与避坑指南(含IP规划)
  • 效用即真理:面向工程决策的可验证Truth=Utility框架
  • 3分钟快速上手:G-Helper华硕笔记本轻量级控制工具完整指南
  • C++ Primer 第17章:标准库特殊设施
  • 永磁直驱风机并网时,弱磁控制到底在什么时候用?一个案例讲清楚
  • 从DeepSeek-R1-Distill中学习蒸馏技术
  • 文章标题:肇庆端州区黄金回收 卖黄金如何避开各类回收陷阱 - 润富黄金回收
  • Agent 学习前的准备 —— Python 语法篇
  • NCMconverter终极指南:如何快速批量解锁网易云音乐加密格式
  • NCMconverter终极指南:高效解密网易云音乐ncm格式的完整解决方案
  • 信息科技正在重塑企业竞争力 AI时代的软件开发与数字化转型
  • 树莓派4B不只是控制器:用它一站式搞定Matter设备固件编译与调试
  • 低温车间防静电桌垫:低温环境真的会影响电阻测试仪测量吗?
  • 【课程设计/毕业设计】基于微信小程序的漫画小说阅读系统基于Springboot+微信小程序的个性化漫画阅读推荐系统的设计与实现【附源码、数据库、万字文档】
  • 科技股完了?