Flutter Native混合开发(一)——Flutter基础

1、Flutter是什么

Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。Flutter工程使用极其容易上手的Dart代码编写,由于其独特的引擎,Flutter可以直接调用硬件,没有中间商赚差价的高效运行。

2、Flutter的UI组件

如同安卓开发中,所有界面都由View组成,Flutter中一切UI都由Widget组成。由Widget的层层堆叠合成UI,Widget生命周期一直延续到setState()调用,UI更新时,此时Flutter框架会重绘整个页面的Widget。

一些Widget,如图片、文字等不会与用户交互的组件,继承自StatelessWidget类,他们在UI更新时会随着Widget树的重绘而重建,但是不会有状态信息的更新过程。如按钮和列表等需要信息更新和与用户交互的组件继承自StatefulWidget类,它包含一个跨生命周期的状态State类可以存储和更新信息。

虽然他们分属不同的类,但是在开发过程中我们仍然可以在组合过程中使用StatelessWidget充当父组件,有需要交互和更新的子组件再使用StatefulWidget,从而提高效率。
Flutter Native混合开发(一)——Flutter基础

3、Flutter框架

Flutter Native混合开发(一)——Flutter基础

该图显示了框架的上层,这个设计的目标是帮助你用更少的代码做更多的事情。例如,Material层是通过组合来自Widget层的基本Widget来构建的, 并且Widgets层本身是通过较低级对象渲染层构建的。

Framework层为构建应用程序提供了许多选项。选择一种自定义的方法来释放框架的全部表现力,或者使用构件层中的构建块,或混合搭配。 您可以实现Flutter提供的所有现成的Widget,或者使用Flutter团队用于构建框架的相同工具和技术创建您自己的定制Widget。

Flutter Engine是一个纯 C++实现的框架层,它包含了 Skia引擎(高性能渲染引擎)、Dart运行时、文字排版引擎等。它可以以 JIT、JIT Snapshot 或者 AOT(预先编译)的模式运行 Dart代码。AOT直接将Dart源码编译成了本地字节码,没有了解释执行的过程,提升执行性能。和Java显著不同的是Dart的线程(Isolate)是不共享内存的,各自的堆(Heap)和栈(Stack)都是隔离的,彼此之间通过消息通道来通信。所以,Dart不存在数据竞争和变量状态同步的问题,整个Flutter Framework Widget的渲染过程都运行在一个Isolate中,在代码调用 Dart UI库时,提供 Dart UI库中 Native Binding 实现。

4、Flutter开发示例

推荐入门文档:

相关文章: