• flutter web遇到的坑


    第一次用flutter 开发web,遇到不少坑:

    1.图片问题:Image.memory来加载图片会报错,估计是html5原生控件没有使用memory创建图片的接口吧。

    2.WebAssembly使用有点复杂,c++的socket跟多线程在谷歌浏览器上不能使用的,只能用websocket。

    3.使用vscode热更时间比较久,应该是dart转js,再同步到浏览器的过程太长。

    4.文件不能本地缓存,只能通过下载。

    5.每次运行都会再C:UsersadminAppDataLocalTemp目录下创建flutter_tools文件夹,并且关闭运行是不会删除,一直占用c盘空间

    6.flutter web的运行原理是将dart语言转成js运行,js中并不支持int64数据类型。

    7.因为js不支持int64,所以ByteData类的字节操作

    getInt64和setInt64调用都会提示不支持,但是可以将int类型拆成高低各4个字节的int来写入或读取ByteData:
    int readInt64([Endian endian]) {
        // bool res = _init(8);
        // if (!res) return 0;
    
        // final value = _data.getInt64(_offset, endian ?? this.endian);//js中不能使用getInt64
        // _offset += 8;
        // return value;
    
        int iLow = readInt32();
        int iHigh = readInt32();
    
        int value = iHigh >> 32;
        value |= iLow;
        return value;
      }
    void writeInt64(int value, [Endian endian]) {
        // _init(8);
        // _data.setFloat64(_offset, value.toDouble(), endian ?? this.endian);js中不能使用setInt64
        // _offset += 8;
    
        writeInt32(value);
        int iHigh = value >> 32;
        writeInt32(iHigh);
      }

    以上方法只针对常用的小端格式写入,大端格式可以仿照。

     8.开发过程http访问有跨域问题,需要本地搭建代理服务器。

    我的代理服务器使用dart开发:

    const String LocalHost = 'localhost';
     
    Future main() async {
      Cors.url.forEach((url, port){
         var server =  shelf_io.serve(
          proxyHandler(url),//url是代理的链接
          LocalHost,
          port,//port是开启的代理端口
        );
    
        server.then((value){
              // 添加上跨域的这几个header
          value.defaultResponseHeaders.add('Access-Control-Allow-Origin', '*');
          value.defaultResponseHeaders.add('Access-Control-Allow-Credentials', true);
    
          print('Serving at ${url} => port: ${port}');
        });
      });
     
    }

     转载请注明出处,from 博客园HemJohn

  • 相关阅读:
    php优秀框架codeigniter学习系列——安装,配置
    设计模式学习系列——桥接模式
    elasticsearch学习笔记——相关插件和使用场景
    elasticsearch学习笔记——安装,初步使用
    设计模式学习系列——适配器模式
    php优秀框架codeigniter学习系列——前言
    设计模式学习系列——原型模式
    angular 自定义指令 directive transclude 理解
    inq to datatable group by 多列 实现
    CSS3 media 入门
  • 原文地址:https://www.cnblogs.com/HemJohn/p/15063079.html
Copyright © 2020-2023  润新知