项目中使用的flutter1.7.8版本中还未将web端与移动端进行统一,所以将web端与移动端分为两个项目。
在包方面
- Web端与移动端在package方面主要的差异有移动端使用Flutter的包,web端使用flutter_web包
- 移动端能够使用的dart:io包在web端使用不了,web有个io.dart用来替代dart:io,因为flutter对web的支持时间还比较短,其中的方法没有实现,如post和get方法返回的是null(图一),类方面,dart:io有的File等类,在io.dart没有。
- 另外一个要注意的是使用了HTTPClient来实现代理的话,这个类在web端功能不全,而web端可以电脑直接抓包,也就不需要这个东西。
在库的使用方面
- 首先是Sharedpreferences这些移动端专有的库使用不了
- 另一个就是库中导入了dart:io的库也是使用不了的,通过不了编译。
- 有些库中导入的是flutter,这种也是使用不了的,不过在使用provide库的时候,因为库只有一个文件,所以做了下尝试,将库的文件放入项目,将库导入的flutter包改为flutter_web,发现能够正常的使用,说明有些库拿下来改改还是能用的。
在网络方面
- 浏览器的跨域访问限制使得flutter生成的js代码在访问网络方面需要服务端支持跨域访问,这个问题如果服务端没有限制访问的话,可以在谷歌浏览器使用Allow-Control