Flutter 有很多带有flatter的嵌套小部件是不是很糟糕?

Flutter 有很多带有flatter的嵌套小部件是不是很糟糕?,flutter,flutter-layout,Flutter,Flutter Layout,我在Android开发方面有很强的背景,现在我正试图用Flatter开发我的第一个应用程序 Android社区的一个常识是,嵌套视图太多是不好的。这对性能不好。(这就是ConstraintLayout存在的原因之一) 然而,在很多flatter教程中,我看到人们嵌套了很多小部件 有人能确认用flatter嵌套小部件不是问题吗?如果我这样做,我的应用程序是否会出现性能不佳的问题 提前感谢嵌套小部件不是问题,实际上是推荐的。 事实上,默认计数器应用程序包含不少于150个小部件 小部件是轻量级对象,经

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

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

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

有人能确认用flatter嵌套小部件不是问题吗?如果我这样做,我的应用程序是否会出现性能不佳的问题


提前感谢

嵌套小部件不是问题,实际上是推荐的。 事实上,默认计数器应用程序包含不少于150个小部件

小部件是轻量级对象,经过专门优化,可以在每一帧中创建和销毁大量小部件。颤振进一步证明了这一点:

与让每个小部件提供大量参数不同,flifter采用了组合。小部件由更小的小部件构建而成,您可以以新颖的方式重用和组合这些小部件,从而生成自定义小部件。例如,RaisedButton将Material小部件与GestureDetector小部件相结合,而不是将通用按钮小部件子类化。Material小部件提供视觉设计,GestureDetector小部件提供交互设计


这句话说,您应该有目的地嵌套小部件

TL;DR:建议在颤振中深度嵌套单用途小部件。


Android和Flatter呈现视图元素(又称小部件或视图)的方式存在根本性差异

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

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

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

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


这里有一个,我向对此主题感兴趣的人推荐。

到目前为止还没有问题。。。我通常会将它们分成更小的部分,只是为了更容易阅读代码。不,小部件树可以比android中的小部件树深十几倍,没有任何问题。必须将其拆分为嵌套的小部件,而不是深入嵌套的
build()
函数。