Flutter网络请求
2026/6/9 8:02:53 网站建设 项目流程

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;}}}

`

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询