Flutter学习笔记(一)

Flutter是什么?

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。简单来说,Flutter是一款移动应用程序SDK,包含框架、控件和一些工具,可以用一套代码同时构建Android和iOS应用,并且性能可以达到原生应用一样的性能。详情请参考Flutter简介

Flutter的性能如何,与RN、Weex、Cordova有何不同?

React-Native、Weex核心是通过Javascript作为桥接调用native,执行时需要Javascript解析器,UI还是通过原生控件渲染的。Flutter与前两者不同在于,他既不使用到WebView,也不使用操作系统的原生控件。那么他是怎么实现的呢?

Flutter使用的是自己的高性能渲染引擎来绘制widget,使用C、C ++、Dart和Skia(2D渲染引擎)构建。在IOS上,Flutter引擎的C/C ++代码使用LLVM编译,任何Dart代码都是AOT编译为本地代码的,Flutter应用程序使用本机指令集运行(不涉及解释器)。而在Android下,Flutter引擎的C/C ++代码是用Android的NDK编译的,任何Dart代码都是AOT编译成本地代码的,Flutter应用程序依然使用本机指令集运行(不涉及解释器)。因此,Flutter能达到原生应用一样的性能。

同时,Flutter提供了一组自己的widget),由Flutter的framework和引擎管理和渲染。之所以不适用原生控件,是因为Flutter希望最终结果是更高质量的,如果Flutter使用原生系统widget,那么应用的质量和性能将受到这些widget本身质量的限制。例如,在Android中,有一组硬编码的手势和固定的规则来对它们进行手势冲突消歧。在Flutter中,您可以编写自己的手势识别器,该手势识别器是手势系统中的一级参与者。此外,由不同人撰写的两个小工具可协调手势冲突消歧。

绘制效率对比

Cordova RN Flutter
40fps 60fps 120fps

Flutter结构图

flutter.png

Flutter前景如何,作为Android人有必要学吗?

Flutter是支持跨平台的,甚至支持嵌入式开发。目前Flutter已经支持Android、iOS、MacOS、Windows、Linux,甚至最新的google也支持。良好的跨平台性直接带来的就是为企业级开发降低,让我们企业级应用在每种终端可以全线上线。

那么作为Android人的我们到底有没有必要去学习呢?
答案是肯定的。笔者认为,Flutter有着先天优越的跨平台性和兼容性,很可能会带来移动开发的又一次大洗牌。目前在国外,像Facebook,Youtube等公司都已经在使用,在国内也有Alibaba、Tencent、美团等大厂在推行,例如:阿里的闲鱼app