不是每一个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

相关推荐
FungLeo5 小时前
Flutter 吸顶分组列表实战:语义桶分组 + 点击头平滑滚动
android·flutter
FungLeo6 小时前
Flutter 超长 StatefulWidget 拆分术:part of + extension on State 实战
android·flutter·dart
GitLqr8 小时前
Impeller 时代:Shader Jank 消失了,但渲染性能的战场也变了
flutter·面试·性能优化
恋猫de小郭10 小时前
Flutter 的另外一种形态?社区 DartNative 要来了。
android·前端·flutter
阿里云云原生1 天前
还原一次用户等待:深度解析 Flutter RUM SDK 如何打通 Dart 到 Native 的观测链路
flutter
_阿南_1 天前
flutter 展示的字体突然奔放了
android·flutter·ios
GitLqr1 天前
玩转 Dart typedef:不仅是函数别名那么简单
flutter·面试·dart
FungLeo1 天前
Flutter 两个反直觉布局坑:ListTile 水波纹 / VerticalDivider 踩坑实录
android·flutter
年小个大2 天前
受 go-zero 启发,我给 Flutter 写了一套 CLI 脚手架
android·flutter·架构
FungLeo2 天前
Flutter 骨架屏 Shimmer 实现:不用 transform 的扫光法实战
前端·javascript·flutter