我很难理解Flutter中的元素是什么。来自doc:"在树中特定位置的Widget的实例化"。 。 。 。我想现在我不得不问,树是什么。
起初,我认为树提到了小部件的状态,但StatelessWidget也有createElement,所以这似乎并非如此。然后,我认为树是指父/子关系,但我不清楚。最后,它听起来像一个元素有点像在特定时间和位置的小部件的快照,但相关的方法似乎并没有反映出这一点。我在附近吗?
答案 0 :(得分:3)
Flutter创建了一个Elements的可视树,它就像Widgets的可变副本。你通常不直接处理Elements,框架也是如此。
所以(一个非常简化的版本)你的树可能看起来像这样:
MediaQuery
-- Theme Data
---- Scaffold
------ AppBar
------ Body
--------- Column
----------- Text
----------- Text
----------- Row
------------- Button
------------- Button
------ FloatingActionButton
这些Text
可能会多次重复使用Widget
,但在树中有唯一的Element
。
答案 1 :(得分:0)
在Flutter widget
中,是UI的配置,代表屏幕上显示的元素或UI的主类是Element
。
也就是说,小部件实际上是Element的配置数据,而小部件树实际上是配置树,因为每当我们创建小部件树时都会自动生成该元素树。
更多信息在这里-https://docs.flutter.io/flutter/widgets/Element-class.html
答案 2 :(得分:0)
Flutter为小部件(包括子小部件)创建元素,该元素显示在屏幕上,并且具有对小部件的引用。 Flutter框架会创建元素树,该树代表屏幕上呈现的窗口小部件。元素表示使用小部件来配置树中的特定位置。如果父窗口小部件重建并为此位置创建新的窗口小部件,则该元素可以更改。元素(可变属性)是通过createElement()方法创建的。框架调用mount方法将新创建的元素添加到给定父级中给定插槽的树中。
有关更多信息,请参见此documentation