符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
项目中在播放本地视频时,在iOS设备没有问题,但是在Android设备报错 FileNotFoundException,具体报错日志如下:
来安网站建设公司创新互联公司,来安网站设计制作,有大型网站制作公司丰富经验。已为来安数千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的来安做网站的公司定做!
经过排查发现实例化视频播放器时本地资源路径 'asset' 前面多了一个 ‘/’ :
在iOS设备上没问题,但是在Android上就变成了错误日志中的 flutter_assets//asset/video/1.mp4 ,变成了2个 / ,去掉 asset 前面的 / 即可。
Flutter Dio源码分析(一)--Dio介绍
Flutter Dio源码分析(二)--HttpClient、Http、Dio对比
Flutter Dio源码分析(三)--深度剖析
Flutter Dio源码分析(四)--封装
Flutter Dio源码分析(一)--Dio介绍视频教程
Flutter Dio源码分析(二)--HttpClient、Http、Dio对比视频教程
Flutter Dio源码分析(三)--深度剖析视频教程
Flutter Dio源码分析(四)--封装视频教程
github仓库地址
本文会手把手教你该怎么去封装一个类库,平时在我们的工作中都是拿着别人的造好的轮子在使用,这篇文章将带你怎么去自己造轮子,以后再碰到别的类库需要对其进行封装的时候提供一个的思路和方法。
在前面的文章中,我们对 Dio 的基本使用、请求库对比、源码分析,我们知道 Dio 的使用非常的简单,那为什么还需要进行封装呢?有两点如下:
当组件库方法发生重要改变需要迁移的时候如果有多处地方用到,那么需要对使用到的每个文件都进行修改,非常的繁琐而且很容易出问题。
当不需要 Dio 库的时候,我们可以随时方便切换到别的网络请求库,当然 Dio 目前内置支持使用第三方库的适配器。
因为一个应用程序基本都是统一的配置方式,所以我们可以针对 拦截器 、 转换器 、 缓存 、 统一处理错误 、 代理配置 、 证书校验 等多个配置进行统一管理。
因为我们的应用程序在每个页面中都会用到网络请求,那么如果我们每次请求的时候都去实例化一个 Dio ,无非是增加了系统不必要的开销,而使用单例模式对象一旦创建每次访问都是同一个对象,不需要再次实例化该类的对象。
这是通过静态变量的私有构造器来创建的单例模式
我们对 超时时间 、 响应时间 、 BaseUrl 进行统一设置
因为不管是 get() 还是 post() 请求, Dio 内部最终都会调用 request 方法,只是传入的 method 不一样,所以我们这里定义一个枚举类型在一个方法中进行处理
我们已经把 Restful API 风格简化成了一个方法,通过 DioMethod 来标明不同的请求方式。在我们平时开发的过程中,需要在请求前、响应前、错误时对某一些接口做特殊的处理,那我们就需要用到拦截器。 Dio 为我们提供了自定义拦截器功能,很容易轻松的实现对请求、响应、错误时进行拦截
我们发现虽然 Dio 框架已经封装了一个 DioError 类库,但如果需要对返回的错误进行统一弹窗处理或者路由跳转等就只能自定义了
在我们发送请求的时候会碰到几种情况,比如需要对非open开头的接口自动加上一些特定的参数,获取需要在请求头增加统一的 token
在我们请求接口前可以对响应数据进行一些基础的处理,比如对响应的结果进行自定义封装,还可以针对单独的 url 做特殊处理等。
我们看了转换器的介绍,发现和拦截器的功能差不多,那为什么还要存在转换器,有两点:
执行流程: 请求拦截器 请求转换器 发起请求 响应转换器 响应拦截器 最终结果 。
只会被用于 'PUT'、 'POST'、 'PATCH'方法,因为只有这些方法才可以携带请求体(request body)
会被用于所有请求方法的返回数据。
在开发过程中,客户端和服务器打交道的时候,往往会用一个 token 来做校验,因为每个公司处理刷新token的逻辑都不一样,我这里举一个简单的例子
为什么我们需要有取消请求的功能,如果当我们的页面在发送请求时,用户主动退出当前界面或者app应用程序退出的时候数据还没有响应,那我们就需要取消该网络请求,防止不必要的错误。
由 服务器生成 的 一小段文本信息 ,发送给浏览器,浏览器把 cookie 以kv形式保存到本地 某个目录下的文本文件内,下一次请求同一网站时会把该 cookie 发送给服务器。
cookie 的使用需要用到两个第三方组件 dio_cookie_manager 和 cookie_jar
因为在我们平时的开发过程中,会碰到一种情况,在进行网络请求时,我们希望能正常访问到上次的数据,对于用户的体验比较好,而不是展示一个空白的页面,该缓存主要是 《Flutter实战》网络接口缓存 提供参考。
我们在程序退出后内存缓存将会消失,所以我们用 shared_preferences 进行磁盘缓存数据。
在我们用flutter进行抓包的时候需要配置 Dio 代理。由 DefaultHttpClientAdapter 提供了一个 onHttpClientCreate 回调来设置底层 HttpClient 的代理。
用于验证正在访问的网站是否真实。提供安全性,因为证书和域名绑定,并且由根证书机构签名确认。
日志打印主要是帮助我们开发时进行辅助排错
1、Avoid empty catch blocks.
如果try catch 中的catch没有任何实现则需要把catch的e异常改为_即可消除警告
2、Prefer const with constant constructors.
意思是需要加上const常量修饰符
3、Prefer using if null operators.
发生在使用三目运算符当中
4、The '!' will have no effect because the receiver can't be null.
在定义空安全之后的使用中
5、Don't access members with this unless avoiding shadowing.
引用了this关键字
6、SizedBox for whitespace.
使用Container布局
6、Unnecessary new keyword.
创建布局控件时使用new关键字
7、Avoid using braces in interpolation when not needed.
日志输出的时候对于单独的变量使用了大括号
8、Use key in widget constructors.
定义的StatefulWidget 中没有添加构造方法
9、The method doesn't override an inherited method.
定义方法之前添加了@override
:声网Agora,实时互动API平台,四行代码,30分钟,在应用内构建语音通话、视频通话、互动直播、实时消息等多种实时互动场景。支持Java、Swift、Electron、React Native、JavaScript 、Flutter等18种语言框架。支持在线KTV、互动课堂、视频会议、...
2021-11-30 回答者:声网Agora 10
有什么软件能自动生成监理日志的?
答:这款机器叫施工单位,纯手动
2015-08-15 回答者: 知道网友 2个回答 1
工程施工管理软件有哪款比较好用的?适合小型项目管...
答:建议使用10oa软件的项目管理,支持手机端和电脑,随时随地进行手机端项目全方位管理审批。
2017-06-01 回答者: 知道网友 1个回答
总监宝手机版监理日志为什么不能填写?
答:总监办的手机,他们的日记为什么不能填下来说的话可能就是他的已经被盗了。
2020-10-22 回答者: 盛夏的约定123 4个回答
有啥工程监理软件好用?(拒广告党!)
问:监理项目上管理用的软件有啥好用
答:推荐总监宝,使用起来方便,而且页面设计简洁,我们单位现在在用。
2020-09-11 回答者: w709500825 3个回答
建筑行业,有哪些好用的APP?
答:【建言筑语】主打行业资讯,业内交流,原创作品推广,对建筑人还是很友好的
2019-12-19 回答者: cn#aGfBukVQpu 11个回答 1
有在做工程监理项目管理软件吗?
问:最好有福建监理公司案例的
答:不知道你要的是不是任务管理软件,如果是的话可以试试高效e人,除了管理任务之外,还可以管理客户信息、日程安排、备忘这些。
2015-04-28 回答者: 重庆易飞科技 1个回答 1
有什么适合的工作日志记录软件
答:合适的工作日志记录软件,可以试试敬业签。 1、具备多端数据云同步(Windows/iPhone/Android/Web)便签内容; 2、公历(阳历)和农历(阴历)定时提醒待办事项的时间管理工具(日历便签); 3、日志时间轴让每一次记录(新增、删除、修改)永久...
2018-07-30 回答者: 敬业签 1个回答
工程项目管理软件有哪些?
答:(一)适用某个阶段进行划分 1、适用某个阶段的特殊用户的项目管理软件:对于用于项目建议书和可行性研究工作项目评估与经济分析软件,设计和招投标阶段的概预算软件,招投标管理软件,快速报价这种项目管理软件往往比较注重实用性。 2、普遍适...
2017-12-25 回答者: 云立方装修管理软件 17个回答 6
最好用的手机记日记软件是什么
答:1、青葱日记 青葱日记是拥有最多插画、最多可爱图案的APP,点进APP后,会出现一本日记的封面,再点选纽扣打开里面的内页,就像翻开实体日记本的感觉,充满了怀念与趣味。而且日记的的选单也很丰富,包括时间轴、照片、日历、日记集和纪念日等功...
如题,在Flutter开发中,正常情况下,修改后按保存(ctrl+s),就能自动将更新内容热加载到设备中,但是我早上突然就遇到保存后没有热加载的情况。
试了试,有的页面是没问题,可以热更新的,有的页面不行,那应该就是某些页面的问题了。在热更新生效的页面,每次保存后查看Run里面输出的日志,发现最后一行是类似:
而热更新无效的页面,保存后的日志是:
也就是AS没有找到改变的东西,所以没更新。
联想到早些时候把几个dart文件的位置拖动了下,是不是那个操作引起的问题,打开来看了看,发现了问题所在。那些引用被拖动文件的地方,引用语句由
变成了
(***是我脱敏替代了)
导致AS无法加载最新修改的内容。
把引用方式由file的方式改回package的方式就行。
以上。
在升级Android12过程中,当升级了classpath 'com.android.tools.build:gradle:7.0.3'之后,sync gradle时出现如下错误日志
解决方法:
找到错误日志中提示的,maven(xxxx),然后增加配置allowInsecureProtocol