flutter:FlutterEngine的作用是什么?

kq0g1dla  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(327)

我正在学习flutter架构。我对FlutterEngine的理解不是很好,也没有找到任何清晰的解释。那么FlutterEngine是做什么的,或者你能给我介绍一些好的文章吗?提前感谢。

nqwrtyyt

nqwrtyyt1#

Flutter在Dart中实现了它的大部分系统(合成、手势、动画、框架、小部件等)。Flutter引擎是用C++编写的,旨在与底层操作系统接口。
Flutter结构由三层组成
1.框架
1.发动机
1.嵌入器
首先,您需要了解Flutter如何在非常高的水平上渲染您的应用,Flutter中的渲染经历了四个阶段:

1.**布局阶段:**在此阶段,Flutter确定每个对象的确切大小,以及它将显示在屏幕上的位置。

#2.**绘画阶段:**在这个阶段,Flutter为每个widget提供一个画布,并告诉它在画布上绘画自己。
#3.**合成阶段:**在此阶段,Flutter将所有内容组合成一个场景,并将其发送到GPU进行处理。
#4.**光栅化阶段:**在该最后阶段,场景作为像素矩阵显示在屏幕上。
To go in-depth refer this article on medium.com

每当需要绘制新帧时,引擎负责光栅化合成场景。

另一件需要注意的事情是Flutter既不使用WebView也不使用设备附带的OEM小部件,而是使用自己的高性能渲染引擎来绘制小部件,这就是Skia(一个2D图形渲染库)
link to flutter official FAQ page

简而言之

它的作用就像一个桥梁,无论你写的dart代码被转换成C和C++,并与Android的NDK(在Android的情况下)和LLVM(在iOS的情况下)“提前(AOT)”编译,猜猜谁是负责这一点?......是的Flutter引擎。
我也强烈建议大家阅读官方文件。

i2loujxw

i2loujxw2#

javadoc
单个Flutter执行环境。
FlutterEngine是一个容器,通过它可以在Android应用程序中运行Dart代码。
FlutterEngine中的Dart代码可以在后台执行,也可以通过使用附带的FlutterRenderer和Dart代码在Dart端使用Flutter框架将其呈现到屏幕上。可以启动和停止呈现,从而允许FlutterEngine从UI交互移动到仅处理数据,然后返回到UI交互。
你通过FlutterEngine启动一个dart isolate(有一个1对1的Map),这确实取决于平台:

您可以在一个项目中拥有多个FlutterEngine,但一个普通的Flutter项目只能拥有1个。所有FlutterEngine将共享同一个Dart VM。
我写了一小段关于FlutterEngine和Dart VM之间的区别,但我希望有人能在那里写一个更好的答案:What is the relationship between Flutter Engine and Dart VM?

相关问题