Flutter简介

Flutter框架分三层
Framework,Engine, Embedder

Framework使用dart语言实现,包括UI,文本,图片,按钮等Widgets,渲染,动画,手势等。此部分的核心代码是flutter仓库下的flutter package,以及sky_engine仓库下的 io, async, ui(dart:ui库提供了Flutter框架和引擎之间的接口)等package。

Engine使用C++实现,主要包括:Skia, Dart 和 Text。

  • Skia是开源的二维图形库,提供了适用于多种软硬件平台的通用API。其已作为Google Chrome,Chrome OS,Android, Mozilla Firefox, Firefox OS等其他众多产品的图形引擎,支持平台还包括Windows, macOS, iOS,Android,Ubuntu等。
  • Dart 部分主要包括:Dart Runtime,Garbage Collection(GC),如果是Debug模式的话,还包括JIT(Just In Time)支持。Release和Profile模式下,是AOT(Ahead Of Time)编译成了原生的arm代码,并不存在JIT部分。
  • Text 即文本渲染,其渲染层次如下:衍生自 Minikin的libtxt库(用于字体选择,分隔行);HartBuzz用于字形选择和成型;Skia作为渲染/GPU后端,在Android和Fuchsia上使用FreeType渲染,在iOS上使用CoreGraphics来渲染字体。

Embedder是一个嵌入层,通过该层把Flutter嵌入到各个平台上去,Embedder的主要工作包括渲染Surface设置, 线程设置,以及插件等。平台(如iOS)只是提供一个画布,剩余的所有渲染相关的逻辑都在Flutter内部,这就使得它具有了很好的跨端一致性。

Dart语言

Dart 也是一种VM语言,所以在每个运行flutter的app中都有一个dart的运行环境。编译模式支持AOT和JIT。
Dart最开始是google设计出来替代javascript的,但是并没有凑效。后面Flutter选择了Dart, 才使Dart活跃起来。

Dart语言的特点:

  • 单进程异步事件模型
  • 强类型,可以类型推断
  • 具有极高的运行效率和优秀的代码运行优化的VM,根据早前的基准测试,性能比肩 Java7 的JVM;
  • 独特的隔离区( Isolate ),可以实现多线程
  • 面向对象编程,一切数据类型均派生自 Object
  • 运算符重载,泛型支持
  • 强大的 Future 和 Stream 模型,可以简单实现高效的代码
  • Minix 特性,可以更好的实现方法复用
  • 全平台语言,可以很好的胜任移动和前后端的开发
  • 在语法上,Dart 提供了很多便捷的操作
     
a
 
 
 

posted on 2020-02-28 16:50  二狗你变了  阅读(409)  评论(0)    收藏  举报

导航