Flutter 总结

  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 总结)