flutter请求,flutter请求 报406-成都快上网建站

flutter请求,flutter请求 报406

Flutter 网络请求类封装及搜索框实现

在 Flutter 中定时器相对 iOS 来说比较好的一点就是定时器事件的执行不会受视图拖拽的影响,不涉及到模式。但是需要注意一点的是在页面离开的时候要对定时器进行销毁。

成都网站建设、网站建设,成都做网站公司-创新互联建站已向上1000+企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。

开始的时候我们是在页面中直接使用三方框架 http 进行网络的请求,这里不好的一点就是如果将来我们更换了网络请求框架的话,项目中涉及到网络的请求的地方都需要改动,对项目的影响会比较大。所以这里我们自己封装了一个网络请求类,定义自己的网络请求方法,即使将来更换三方框架的话,我们只需要在我们自己网络请求类里面更换就好,项目的其他地方不用改动。对网络请求进行封装,相信不管是 iOS 项目还是安卓项目肯定也都是这样做的。

这里我们是基于 Dio 这个三方框架进行封装的,在 HttpManager 类中我们定义了 Dio 的单例对象 _dioInstance ,通过单例方法 _getDioInstance 来获取单例对象。我们定义了 post 跟 get 两个静态方法,在这两个方法中我们都调用了私有方法 _sendRequest , _sendRequest 方法中通过该传入的枚举参数 HttpMethod 来区分 Dio 单例对象是调用 get 还是 post 请求。这里需要注意的是方法中一定要使用 async ,返回值前要加 await 。

在聊天页面中我们可以看到顶部的搜索框,这个搜索框是跟列表一起滚动的,所以比较好的实现方式就是把搜索框定义为一个 cell 。其实这个搜索框只有点击事件,点击之后跳转一个新的页面,所以我们只需要使用小部件来实现搜索框的展示就好。搜索框由白色底视图跟图片和文本组成,所以这里我们通过 Stack 部件来实现, children 的第一个元素为白色底视图,图片跟搜索文字用 Row 部件来实现,图片跟文字布局左右排列。

[img]

flutter 网络请求dio的简单使用以及请求头参数的自定义

dio的使用方式有很多,我就只选出我认为最好用的api方式做下记录,把get成post就是post请求了,网络请求都用的百度的api,实际上的response没有任何意义,所以只要打印出response有值即可。

1.最简单的请求例子,网络请求是异步的所以用async await

2.带有参数的get请求

3.自定义请求头,可定义的请求头dart已经为我们提供了专门的类存了对应的字符,引入以下库,就能使用 HttpHeaders

一般我们请求接收到的数据是json格式,如'accept: application/json',我们就可以这样自定义请求头

4.使用Baseoptions

其他详细参数设置参考如下:

flutter 同时执行多个异步请求回调

flutter中提供了Future.wait()函数,可以在执行多个异步请求之后有一个统一的回调结果,但是劣势在于,每一个异步函数的函数体中都需要执行return去返回结果,如果在异步请求中,有多层success或者fail这种函数的嵌套,那么可能会在某个地方忽略掉retrun,导致没有办法拿到正确的结果。所以这里封装了一个类似于js中Promise中的类去执行多个异步请求。

调用方式如下:

Flutter 网络请求报错 Failed host lookup:

Flutter 网络请求报错 Failed host lookup:

一、如果是iOS真机调试报错

1.检查iOS是否开启网络权限(在设置中检查一下),(如果HTTP,在info中 添加 ATS)

二、如果是Android模拟器或真机调试报错

在debug和release目录中的AndroidManifest.xml中加上

uses-permission android:name="android.permission.INTERNET"/

uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/

如果还是不行,执行

flutter clean

Flutter中的网络请求库Dio简单使用

pubspec.yaml配置dio: ^版本号

执行Pub get

导入头文件

get请求与post请求

简单封装

封装请求类:

封装配置信息类:

调用:


新闻名称:flutter请求,flutter请求 报406
文章转载:http://kswjz.com/article/dsopsee.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流