Flutter 总结

作者: 不拘小节123456 | 来源:发表于2021-10-11 17:18 被阅读0次
    1. 优势:

      • 两端公用一套代码
      • 搭建UI方式简单,快捷
      • 相比RN,需要适配的地方少,且流畅度高
      • 热重载,dart支持JIT,开发时可以不需要重新build就修改UI
      • 单线程语言,不需要注意在子线程访问UI的问题,
      • Dart 中并没有线程,只有 Isolate(隔离区)。Isolates 之间不会共享内存,就像几个运行在不同进程中的 worker,通过事件循环(Event Looper)在事件队列(Event Queue)上传递消息通信。

      2.缺点:

    • 相对RN不能动态发版本
    • 相对原生目前只支持简单UI控件渲染,对于webView,视频播放,仍然需要和原生混编
    • 对于混编,原生页面和Flutter页面叠加跳转由于Flutter Engine重复创建而导致内存暴增,对于这个问题引入FlutterBoost库
    • flutter不支持像(java的反射,iosRuntime)这样的动态机制,导致服务动态的进行json转转model,解决方案:通过android sdutio插件解决

    1,dart特点:

    Dart

    入门教程:

    1,https://flutterchina.club/docs/

    接入flutter_boost

    androin:

    https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps
    https://juejin.im/post/5cf52fa851882534566917e5

    ios:

    https://blog.csdn.net/lizubing1992/article/details/90954195

    咸鱼混编实现方案:

    https://zhuanlan.zhihu.com/p/40528502

    咸鱼文章:

    https://www.infoq.cn/article/xianyu-cross-platform-based-on-flutter

    编译模式文章

    https://www.jianshu.com/p/f44db0d088e5

    坑:flutter1.8之后androin产物修改

    https://www.sohu.com/a/345947027_670669

    混编总结:目前两种,

    1,通过配置引用关系,ios(androin)主工程通过pod(gradle)与flutter建立引用关系然后进行变异,相当于把三个工程紧密的耦合到一起,缺点是其他不开发flutter业务到同学也需要进行复杂到配置

    2,把flutter编译产物做成子库ios(framework),android(不同版本flutter编译产物不同),

    未解决问题记录:

    1,混编在vivo部分机型无法内嵌webview

    2,flutter 打iosdebug环境包失败

    解决问题记录:

    flutter ios端使用stoaryboard布局,如果有子view需要紧贴底部布局,会出现跳动问题?

    问题定位:经过xcode查看布局,发现UI错乱端View是flutter端view而不是ios默认启动图view,确定问题为flutter自定义了一套启动图但是有bug

    解决方案:经过查看FlutterViewController暴漏Api,发现了splashScreenView属性,测试结论,它是异常的View,解决方式,拿到它的子view,重新用frame布局,经过测试可以显示正常。

    不足点:需要维护两套布局,stoaryboard和重写端FlutterViewController,本来计划采用公用一套View,用snap布局,但发现其他问题,后先放弃,以后在尝试。

    常见问题参考文章:

    https://www.jianshu.com/p/bf3002de6a5e

    相关文章

      网友评论

        本文标题:Flutter 总结

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