美文网首页
flutter Dio封装get/post请求

flutter Dio封装get/post请求

作者: 沉船无数 | 来源:发表于2020-06-06 11:36 被阅读0次

    最近刚学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
    最后

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

    相关文章

      网友评论

          本文标题:flutter Dio封装get/post请求

          本文链接:https://www.haomeiwen.com/subject/bpwttktx.html