Dio下载地址github:dio
初始化网络请求

BaseOptions option = BaseOptions();
//初始化cotentType
option.contentType = ContentType.parse("application/json;charset=UTF-8");
//设置请求头参数
option.headers = {'token':'ab2343sdfsdfsfsdf1213123'};
//创建Dio
Dio dio = Dio(option);

发起get或者post请求
get

 /*get请求*/static Future<AjaxResult> get(String url, {Map params}) async {if (params != null && params.isNotEmpty) {// 如果参数不为空,则将参数拼接到URL后面StringBuffer sb = StringBuffer("?");params.forEach((key, value) {sb.write("$key" + "=" + "$value" + "&");});String paramStr = sb.toString();paramStr = paramStr.substring(0, paramStr.length - 1);url += paramStr;}print('url---> $url');Dio dio = getDio();try {Response res = await dio.get(url);// var re = Utf8Decoder().convert(res.data);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) { print(e);FuntionUtil.toast(e.message);}}

post请求

  static Future<AjaxResult> post(String url, {Map<String,dynamic> params}) async {// final paramsjson = jsonEncode(params);print('url---> $url params--->$params');Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, queryParameters: params);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;// var re = Utf8Decoder().convert(res.data);} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}

图片上传

static Future<AjaxResult> upload(String url, File imgfile,{Map<String, String> params}) async {// final paramsjson = jsonEncode(params);String path = imgfile.path;var name = path.substring(path.lastIndexOf("/") + 1, path.length);FormData formData = new FormData.from({"Filedata": new UploadFileInfo(File(path), name),"size":"0","majia":"zhaowojie",// 'Files[]': [new UploadFileInfo(File(path), "sa"),new UploadFileInfo(File(path), name)],});Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, data: formData);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}

完整代码

import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutte_xms/model/ajaxresult.dart';
import 'package:flutte_xms/model/usermodel.dart';
import 'package:flutte_xms/util/func_util.dart';
import 'package:flutte_xms/util/usermanager.dart';class DioReq {/*get请求*/static Future<AjaxResult> get(String url, {Map params}) async {if (params != null && params.isNotEmpty) {// 如果参数不为空,则将参数拼接到URL后面StringBuffer sb = StringBuffer("?");params.forEach((key, value) {sb.write("$key" + "=" + "$value" + "&");});String paramStr = sb.toString();paramStr = paramStr.substring(0, paramStr.length - 1);url += paramStr;}print('url---> $url');Dio dio = getDio();try {Response res = await dio.get(url);// var re = Utf8Decoder().convert(res.data);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) { print(e);FuntionUtil.toast(e.message);}}/*post请求*/static Future<AjaxResult> post(String url, {Map params}) async {// final paramsjson = jsonEncode(params);print('url---> $url params--->$params');Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, data: params);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;// var re = Utf8Decoder().convert(res.data);} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}/*图片上传*/static Future<AjaxResult> upload(String url, File imgfile,{Map<String, String> params}) async {// final paramsjson = jsonEncode(params);String path = imgfile.path;var name = path.substring(path.lastIndexOf("/") + 1, path.length);FormData formData = new FormData.from({"Filedata": new UploadFileInfo(File(path), name),"size":"0","majia":"zhaowojie",// 'Files[]': [new UploadFileInfo(File(path), "sa"),new UploadFileInfo(File(path), name)],});Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, data: formData);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}static Dio getDio() {BaseOptions option = BaseOptions();option.contentType = ContentType.parse("application/json;charset=UTF-8");//如果用户登录成功 将token带上if (UserManager.shared.isLogin) {UserInfo info = UserManager.shared.userInfo;print('appLoginToken:${info.userId}');if (info != null) {option.headers = {'userId': info.userId,};}}return Dio(option);}
}

关于AjaxResult Model


const AjaxResultStateSuccess = 0;class AjaxResult {int status;String msg;dynamic data;AjaxResult({this.status, this.msg, this.data});AjaxResult.fromJson(Map<String, dynamic> json) {status = json['status'];msg = json['msg'];data = json['data'];}Map<String, dynamic> toJson() {final Map<String, dynamic> datas = new Map<String, dynamic>();datas['status'] = this.status;datas['msg'] = this.msg;datas['data'] = this.data;return datas;}
}

怎么使用 post get upload

   DioReq.post(请求的url, params: {'mobile': phone,'authCodeType': 1,  }).then((res) {if (res.status == AjaxResultStateSuccess){print('验证码发送成功');}else{FuntionUtil.toast(res.msg);}},);//图片上传DioReq.upload(请求的url, forgroundImg).then((res){if(res.status == AjaxResultStateSuccess){FuntionUtil.toast(res.msg);print(res);}else{FuntionUtil.toast(res.msg);}});

flutter dio网络请求 get post 图片上传相关推荐

  1. android上传头像 sockettimeoutexception,Kotlin - Retrofit2和Rxjava2封装的网络请求类(含图片上传)...

    阅读建议:本文适合熟悉Retrofit与Rxjava2的同学阅读,其中也包含一丢丢的RxLifecycle,文中不包含这两个库的使用说明.不熟悉RxJava的同学,建议去这里了解,里面包含3篇文章,均 ...

  2. Android 利用an框架快速实现网络请求(含下载上传文件)

    作者:Bgwan 链接:https://zhuanlan.zhihu.com/p/22573081 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架 ...

  3. Flutter Dio网络请求:DioError [DioErrorType.RESPONSE]: Http status error [400]或者[500]

    DioError [DioErrorType.RESPONSE]: Http status error [400] 1)检查请求参数是否正确 : 比如,如果参数map中value是一个数组,如下代码中 ...

  4. Go语言练习:网络编程实例——简易图片上传网站

    1.代码结构 $ tree . ├── photoweb.go ├── public │ ├── css │ ├── images │ └── js ├── uploads └── views├── ...

  5. java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...

  6. 微信小程序多图片上传全栈实战

    本篇教程技术栈:springBoot(Java后端)+  微信小程序.完整的图片上传教程. 页面截图,点击图片右上角按钮可以删除图片. 1.图片上传需要使用wx.uploadFile(Object o ...

  7. java spring上传图片_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共 537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现 ...

  8. flutter网络请求dio的get、post、上传文件、下载文件总结

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频教程在这里 Flutter 从入门实践到开发一个APP之UI基础 ...

  9. AFNetworking网络请求与图片上传工具(POST)

    AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h>/** 成功Block */ typedef voi ...

最新文章

  1. Android APP全面屏适配技术要点
  2. 找到IIS Express配置/配置数据库文件在哪里?
  3. jvm性能调优实战 - 45无限制的调用方法导致栈溢出OOM
  4. 一文读懂什么是C++移动语义《一》
  5. 关于html的一些杂技
  6. FusionCharts-堆栈图、xml格式、刷新数据、添加事件link、传参
  7. redis缓存跟数据库数据不一致问题解决
  8. 互联网公司端午节礼盒歧视指南
  9. 模糊聚类划分matlab代码,模糊C均值聚类算法(原理+Matlab代码) - 全文
  10. 3DMAX卸载/完美解决安装失败/如何彻底卸载清除干净3DMAX各种残留注册表和文件的方法...
  11. 大麻和烟草对表观基因组产生双重影响
  12. java end_Fabric学习笔记(七) - fabric-sdk-java End2endIT运行
  13. python中e怎么计算_蒙特卡洛法计算自然常数e——python编程及可视化
  14. ValueError: n_splits=n cannot be greater than the number of members in each class.
  15. circos个人使用教程
  16. 计算机网络dce是什么意思,DTE与DCE的解释
  17. 典型二阶系统的计算机仿真,二阶系统电路设计_RLC串联二阶电路实验报告
  18. 信号与系统:拉式变换(s域)求解电路的零输入、零状态响应
  19. ado控件连接mysql_Delphi中用ADO控件连接数据库例子
  20. mysql官网下载官网示例sql文件

热门文章

  1. 西门子1500与SMC EX260总线阀岛通讯组态
  2. linux :ubuntu 实用软件
  3. CSS(三):CSS特性与盒子模型
  4. JAVA插入数据库时java.sql.DataTruncation: Data truncation
  5. leetcode971. 翻转二叉树以匹配先序遍历
  6. Camtasia Studio 6录制视频时鼠标闪烁的解决办法
  7. 将网页保存为mht文件
  8. 读取.dwg文件“曲线救国”之读取.dxf
  9. icesword 是如何列出隐藏进程?
  10. 7-2 词典 (15分)19物联网张春