最近刚学flutter,参考简书大佬们的文章,使用dio简单封装了一下网络请求工具类。

依赖版本

9683BF5F-1627-47F1-AE3A-ECBC55ED49CF.png

网络请求单例

A2FD169B-6029-4CA6-A2A1-AEF2BA82692F.png

get请求

94900BD6-3931-4116-8D47-76609F5EF515.png

needToken请忽略,以前是打算获取本地存储的token,需要传token的请求带上,后来发现这么做有问题,后面会提到。

请注意,如果get参数需要拼接在url后,那么使用queryParameters,后面放参数字典,如果是放body,使用data,后面跟参数字典。

BaseMode

E301BEA0-5226-421E-ABC8-D7C126E0261A.png

根据后台返回数据,简单封装。

使用

0B8EAD53-485E-42A8-8DD6-DDF4D3710AC6.png

post请求

4AD8E928-B6AB-4C0E-A58E-6AE3ED16CD4D.png

post请求和get请求区别不大,我的项目get请求参数直接拼在url后面,所以get使用queryParameters,后台要求post放body,所以post使用data。

post使用

32A0B205-E43F-4A67-BF9B-406B14F78F7C.png

带本地存储token的get请求

我们项目很多请求需要带上登录返回的token,所以,我用shared_preferences插件把它存在本地,shared_preferences在iOS端使用的是NSUserDefaults。

5B7D1E5F-439D-4220-ADB2-C0BB8FFFE1EC.png

以前的想法,如果needToken为true,则去获取本地的token,设置dio.header,如下所示

B2C34474-07CF-43CC-BE93-1B41C21D33B8.png

然而,获取token是异步的,也就是说获取到token后,不等网络请求完成,直接return了,所以,获取到的res自然为null了。因此,我们需要一个能控制future返回的工具,正好,flutter提供的Completer能让我们控制future。

88E414FE-79D7-48A5-8CE6-92EC3B8C84CD.png

适当的时机调用complete(),即网络请求完成,获取到数据的时候,然后返回complete.future。

使用

7CD99341-921F-45D8-8E85-B20B33DBA263.png

3797273D-4021-4D57-94FE-BC2053D93994.png

87803E0E-42C6-440E-A37C-DFA508A51772.png

最后

我也是刚学的菜鸡,如有错误,嘿嘿嘿。。。

dio设置自定义post请求_flutter Dio封装get/post请求相关推荐

  1. dio设置自定义post请求_Flutter中的http网络请求

    前言 由于刚过完年工作比较紧张,文章已经四周没有更新了,非常抱歉!接下来依然会尽量保持每周更新! 本篇介绍Flutter中网络请求相关api的使用,Flutter在Flutter engine中提供了 ...

  2. dio设置自定义post请求_强大的dio封装,可能满足你的一切需要

    dio是一个强大的Dart Http请求库,支持Restful API.FormData.拦截器.请求取消.Cookie管理.文件上传/下载.超时.自定义适配器等.. 基本使用 添加依赖 depend ...

  3. dio设置自定义post请求_基于dio库封装flutter项目的标准网络框架

    网络框架是每个应用的基石,封装一个好的网络框架不仅是项目的一个好的开始,并且直接影响到随后项目的稳定性和可扩展性.在移动开发的各个端都有非常赞的网络请求基础框架,比如Android的okhttp库.s ...

  4. dio设置自定义post请求_flutter中dio的post请求方式使用总结

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 1 引言 dio用来在flutter跨平台开发中访问网络的框架,在使用的时候,我们首先是引入依赖 depen ...

  5. dio设置自定义post请求_使用Dio封装ajax的post和get操作

    dio是经常使用到的一个包,为flutter的日常开发提供了很多支持.本文主要描述如何使用Dio封装ajax请求. dio的依赖:dependencies: dio: 3.0.8 dio包的导入:im ...

  6. dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header

    话不多说自己看代码封装的比较简单,比较适合入门学习Dio. import 'package:dio/dio.dart'; import 'Api.dart'; /* * 封装 restful 请求 * ...

  7. dio设置自定义post请求_Flutter 使用dio来发起网络请求以及Cookie管理

    说点儿闲话 Flutter官方建议您使用 dio 来发起网络请求,在学习过程中,也尝试过用dart io中的HttpClient发起的请求,这里主要讲一下dio的使用以及CookieJar.Cooki ...

  8. 06_Request对象封装请求信息(获取请求信息,和把前端请求转发到当前服务器其他资源)

    请求头运用 解决浏览器的兼容性问题 解决获取中文请求参数值 乱码问题 Referer作用:防盗链,统计访问 两个模块需要开两个服务器,分别设置不同虚拟目录和端口号 获取请求数据 获取请求行数据 获取请 ...

  9. cmd怎么使用post请求’_flutter中dio的post请求方式使用总结

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

最新文章

  1. 【VS实践】VS解决方案中出现无法生成DLL文件
  2. 技术人员为什么应该参加社区活动?
  3. 【附段错误原因,最后两个测试点】1052 Linked List Sorting (25 分)【链表类题目总结】
  4. apache部署https
  5. 最少硬币找零系列问题(01背包,完全背包,多重背包动态规划)
  6. PropertyUtils.copyProperties 属性值复制失败
  7. vue 日程表组件_VUE也有自己的日历组件
  8. 服务器整体爆率如何修改,传奇服务端gom引擎提升爆率脚本
  9. C# dataGridView限制某一行的单元格只输入数字的方法之一
  10. lintcode 168. 吹气球 动态规划
  11. 积分商城游戏化运营?积分游戏应该如何正确设置
  12. Zabbix agent2安装
  13. 河南工业大学高级JAVA实验,大学_计算机控制技术实验报告河南工业大学4
  14. Linux快速入门之 静态库和动态库 (07)
  15. 【项目实战】Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
  16. java虚拟机内存查看相关命令
  17. Ubuntu 16.04如何使用无线网卡上网
  18. 计算机之父——约翰·冯·诺依曼(现代计算机之父”、“博弈论之父”)
  19. 整理2020java面试题
  20. Niushop 商品规格设置

热门文章

  1. 腾讯严打第三方QQ机器人:多家QQ机器人暂停服务
  2. 机器学习和人工智能方法在CADD中的应用
  3. 如何防止hibernate对entity实体的自动保存
  4. 详细分析机器人伺服系统,对比国内外伺服代表产品
  5. 如何计算UDP头的checksum
  6. 分布式键值存储系统ETCD介绍
  7. 杭州安川焊接机器人_安川YASKAWA 焊接机器人MA1400
  8. 免费使用PDF编辑器
  9. 移动管家汽车tbox车联网终端多种车型共享汽车智能终端4G-TBOX车载硬件GPS分时租赁免破线
  10. 第一个五年,快速到P7获取年薪50w