简介

2020-04-11  本文已影响0人  寒冬_腊月

Flutter 特点

跨平台,在Android和iOS平台上创建高质量的原生体验,不使用webview, 而是使用自己的高性能渲染引擎来绘制widget

Flutter使用Skia作为其2D渲染引擎,Skia是Google的一个2D图形处理函数库

程序主要有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,而解释执行的则是一句一句边翻译边运行

JIT(Just-in-time)即“即时编译”, 用于开发阶段,这样就避免了每次改动都要进行编译,极大的节省了开发时间,JIT的代表则非常多,如JavaScript、python等

AOT (Ahead of time) 即 “提前编译”, 用于发布阶段,生成高效的ARM代码(Android上是.so文件)以保证应用性能

声明式 UI

从 Win32 到 Web 再到 Android 和 iOS,框架通常使用一种命令式的编程风格来完成 UI 编程。这可能是你最熟悉的风格 — 你手动构建一个全功能的 UI 实例,比如一个 UIView 或其他类似的,在随后 UI 发生变化时,使用方法或 Setter 修改它。

为了减轻开发人员的负担,无需编写如何在不同的 UI 状态之间进行切换的代码, Flutter 相反,让开发人员描述当前的 UI 状态,并将转换交给框架。

架构

image.jpeg

Flutter Framework

这是一个纯 Dart实现的 SDK,它实现了一套基础库,自底向上,我们来简单介绍一下:

Flutter Engine

这是一个纯 C++实现的 SDK,其中包括了 Skia引擎、Dart运行时、文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。

embedder提供的4种task runner

Flutter 的构建模式

三种构建模式:

单线程模型

dart默认运行在Main函数存在线程,在dart中称之为isolate,这个线程我们可称之为main isolate

文件I/O和网络调用并不是在Dart层做的,而是由操作系统提供的异步线程,他俩把活儿干完之后把结果刚到队列中,Dart代码只是执行一个简单的读动作。

上一篇 下一篇

猜你喜欢

热点阅读