(一)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项目模板