(一)flutter 介绍

(一)flutter 介绍

  • Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。

    • 快速开发
      • 开发过程中,毫秒级的热重载,修改后,您的应用界面会立即更新。使用丰富的、完全可定制的widget在几分钟内构建原生界面。

      • Dart运行时和编译器支持Flutter的两个关键特性的组合:

      • 基于JIT的快速开发周期:Flutter在开发阶段采用,采用JIT模式,这样就避免了每次改动都要进行编译,极大的节省了开发时间;

      • 基于AOT的发布包: Flutter在发布时可以通过AOT生成高效的ARM代码以保证应用性能。而JavaScript则不具有这个能力。

    • 富有表现力和灵活的UI
      • 快速发布聚焦于原生体验的功能。分层的架构允许您完全自定义,从而实现难以置信的快速渲染和富有表现力、灵活的设计。
    • 原生性能
      • Flutter包含了许多核心的widget,如滚动、导航、图标和字体等,这些都可以在iOS和Android上达到原生应用一样的性能。
  • Flutter使用Skia作为其2D渲染引擎

    • Flutter与用于构建移动应用程序的其它大多数框架不同,Flutter既不使用WebView,也不使用操作系统的原生控件。
    • Flutter使用自己的高性能渲染引擎来绘制widget。这样可以保证在Android和iOS上UI的一致性,从而可以避免对原生控件依赖而带来的限制及高昂的维护成本。
    • skia是Google的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,Skia是跨平台的,并提供了非常友好的API。目前Google Chrome浏览器和Android均采用Skia作为其绘图引擎,值得一提的是,由于Android系统已经内置了Skia(搭配OpenGL/ES与特定的硬件特征,强化显示的效果)所以Flutter在打包APK(Android应用安装包)时,不需要再将Skia打入APK中,
    • 但iOS系统并未内置Skia,所以构建iPA时,也必须将Skia一起打包,这也是为什么Flutter APP的Android安装包比iOS安装包小的主要原因。
  • 高性能

    • Flutter APP采用Dart语言开发。Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。
    • 但是 Dart支持 AOT,当以 AOT模式运行时,JavaScript便远远追不上了。速度的提升对高帧率下的视图数据计算很有帮助。-
    • 其次,Flutter使用自己的渲染引擎来绘制UI,布局数据等由Dart语言直接控制,所以在布局过程中不需要像RN那样要在JavaScript和Native之间通信,这在一些滑动和拖动的场景下具有明显优势,因为在滑动和拖动过程往往都会引起布局发生变化,所以JavaScript需要和Native之间不停的同步布局信息,这和在浏览器中要JavaScript频繁操作DOM所带来的问题是相同的,都会带来比较可观的性能开销。

Flutter项目组公布了2019年的发展路线,明确表明Flutter将在基础功能、生态系统等多方面进行改进。

  • 基础方面 - bug修复、改善性能和测试、改进错误信息和API文档

  • 便于采用 - 满足将Flutter嵌入已有应用的各种需求、更新扩展Flutter网站、状态管理最佳实践、 完善ios风格组件、使Flutter易于试用

  • 生态系统 - Dart可以与C/C++代码交互、提升插件质量、完成地图和Webview插件、方便使用google服务、本地通知和本地存储

  • 超越mobile - 改善鼠标和键盘的支持、正式发布Hummingbird即Flutter的Web运行时、继续探索桌面端开发

  • 动态更新 - Android端支持热更新、功能模块支持懒加载

  • 工具 - 继续改进Flutter对VS Code/Android Studio//IntelliJ的支持、支持 LSP 协议、改善应用的分析和调试体验、完善Flutter项目模板