2

我正在阅读 Flutter 关于状态管理的官方文档,在此页面中它说:

例如,在 Flutter 中,可以从头开始重建部分 UI,而不是修改它。Flutter 的速度足以做到这一点,如果需要的话,即使在每一帧上也是如此。

作为一名 Android 开发人员,在大多数情况下,构建 aView确实很昂贵,应该避免。所以我想知道为什么在 Flutter 中重新构建视图层次结构是负担得起的。

View对比 Android和 Flutter 的类声明,WidgetAndroid View 有更多的字段并且在构造函数中做了很多工作,所以我猜一个原因是在 Flutter 中创建一个新的类实例比在 Android 中更便宜。但为什么 Android(作为命令式框架)View比 Flutter(作为声明式框架)需要如此复杂的类来驱动 UI?命令式 UI 和声明式 UI 的 UI 渲染机制的共同点是什么?

4

1 回答 1

0

本质上,声明式模型和命令式模型之间没有区别。就是 AndroidView的创建成本很高。当你说“Android View 有更多的字段并且在构造函数中做了很多工作”时,你是对的——这正是问题所在。FlutterWidget非常轻量级,包含的信息刚好足以让系统弄清楚 Element 树应该是什么样子。Elements 是较重的对象,其状态可能需要重新创建(包括s RenderObject),并且这些对象仅创建一次(对于 Widget 树中的每个 Widget 位置)。之后,它们只是在 Widget 树发生变化时使用新信息进行更新,而不是从头开始重新创建。

这里有几篇文章,其中包含一些您可能会发现有用的更多信息:

于 2020-04-13T08:56:08.253 回答