首页 > 解决方案 > Flutter 有很多嵌套的小部件是不是很糟糕?

问题描述

我在 Android 开发方面有很强的背景,现在我正在尝试使用 Flutter 开发我的第一个应用程序。

Android 社​​区的一个常识是嵌套视图太多是不好的。这对性能不利。(这也是 ConstraintLayout 存在的原因之一)

然而,在很多 Flutter 教程中,我看到人们嵌套了很多小部件。

有人可以确认用 Flutter 嵌套小部件不是问题吗?如果我这样做,我的应用程序会遭受糟糕的性能吗?

提前致谢

标签: flutterflutter-layout

解决方案


TL;DR:建议在 Flutter 中深度嵌套单一用途的小部件。


Android 和 Flutter 渲染视图元素(又名小部件或视图)的方式存在根本差异。

在 Android 中,相互继承的复杂视图相对较少。每个视图都提供了一个巨大的 API 界面,包括填充、边距、颜色等。

另一方面,Flutter 更喜欢组合而不是继承。大多数小部件仅出于单一目的而存在,并且非常轻量级。这意味着您需要更深入地嵌套小部件以实现相同的效果,但由于它们的布局和渲染逻辑更容易,渲染通常更快。

例如,有一个Padding小部件在其子项周围留出一些空间。小Padding部件的规则非常简单,渲染速度非常快。此外,每个其他小部件的规则也变得更简单,因为它们不再需要担心填充。

基本上,Flutter 推荐深度嵌套小部件。这与 Android 的模型完全相反: 如果没有太多嵌套,您可能做错了什么,因为您有一个巨大的小部件,通常可以拆分成更简单、更快、更小的小部件。

这是一个关于 Flutter 渲染管道的有趣的 Google 技术讲座,我推荐给任何对此主题感兴趣的人。


推荐阅读