不是每一个Widget都会生成一个RenderObject

写代码不需要知道底层

而面试需要底层所有原理

都是一样写出能用的代码

也就是远来的和尚会念经啊

一、不会创建 RenderObjectElement(ComponentWidget)

这些 Widget 只负责组合、状态管理或逻辑控制,会创建 StatelessElementStatefulElement

Widget Element
StatelessWidget StatelessElement
StatefulWidget StatefulElement
MaterialApp StatelessElement
Scaffold StatefulElement
Builder StatelessElement
FutureBuilder StatefulElement
StreamBuilder StatefulElement
AnimatedBuilder StatefulElement
GestureDetector StatefulElement
Navigator StatefulElement

也就是它们不会在RenderObject树上。

二、会创建 RenderObjectElement(RenderObjectWidget)

Widget Element RenderObject
Text LeafRenderObjectElement RenderParagraph
RichText LeafRenderObjectElement RenderParagraph
Image LeafRenderObjectElement RenderImage
EditableText LeafRenderObjectElement RenderEditable
Container SingleChildRenderObjectElement RenderDecoratedBox(有装饰时)
Padding SingleChildRenderObjectElement RenderPadding
Center SingleChildRenderObjectElement RenderPositionedBox
Align SingleChildRenderObjectElement RenderPositionedBox
SizedBox SingleChildRenderObjectElement RenderConstrainedBox
DecoratedBox SingleChildRenderObjectElement RenderDecoratedBox
ConstrainedBox SingleChildRenderObjectElement RenderConstrainedBox
Opacity SingleChildRenderObjectElement RenderOpacity
Transform SingleChildRenderObjectElement RenderTransform
ClipRRect SingleChildRenderObjectElement RenderClipRRect
Row MultiChildRenderObjectElement RenderFlex
Column MultiChildRenderObjectElement RenderFlex
Flex MultiChildRenderObjectElement RenderFlex
Stack MultiChildRenderObjectElement RenderStack
Wrap MultiChildRenderObjectElement RenderWrap
ListBody MultiChildRenderObjectElement RenderListBody

它们会在RenderObject树上

嘚不嘚

Widget即配置,并不会对应着一模一样的RenderObject。 少了很多绘制,也是优化了绘制,提高性能。在写Widget的时候,能少用会生成RenderObjectElement的widget,也就是优化代码了。性能提升一点是一点。

DONE

相关推荐
传奇开心果编程7 小时前
【Flutter入门练中学】第2课:布局系统
学习·flutter·ui
君赏12 小时前
FlutterPatch:把 Shorebird 热更新的控制面搬回自己服务器
flutter
用户21816970493015 小时前
Flutter tootip 轻量级提示
flutter
用户21816970493016 小时前
Flutter 拖拽 Draggable DragTarget
flutter
yume_sibai16 小时前
05-Flutter实战项目
前端·flutter
传奇开心果编程17 小时前
【Flutter入门练中学】第1课:从零开始
学习·flutter·ui
用户2181697049301 天前
Flutter ClipPath
flutter
用户2181697049301 天前
Flutter 折叠组件 ExpansionTile ExpansionPanelList
flutter
不羁的木木2 天前
给鸿蒙 App 增加用系统应用打开文件的能力 —— open_app_file 的鸿蒙使用指南
flutter·harmonyos
HouWan2 天前
Flutter: MediaQuery.of(context) 为什么可能拖慢页面?
android·flutter·ios