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

写代码不需要知道底层

而面试需要底层所有原理

都是一样写出能用的代码

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

一、不会创建 RenderObjectElement(ComponentWidget)

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

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

相关推荐
yuanlaile11 小时前
2026年全新Flutter 跨平台开发全栈学习资料整理
flutter·getx·鸿蒙 next·flutter开发鸿蒙·flutter入门实战·flutter全栈
恋猫de小郭21 小时前
Genkit Dart 1.0 发布,Flutter 原生的 AI Agent 终于完整了
android·前端·flutter
第10086个小白1 天前
flutter桌面端打包方式(Inno Setup Compiler)版本
前端·flutter
陆断枫2 天前
Flutter 3.47 动画引擎盘点:Impeller 全平台,和那些"新特性"
flutter
程序员老刘2 天前
Flet 1.0 思路很好,可惜来晚了
flutter·ai编程·客户端
m0_738185822 天前
Flutter 鸿蒙化实战:qr_code_scanner_plus 适配 OpenHarmony,二维码扫描
flutter·华为·harmonyos·鸿蒙
恋猫de小郭2 天前
Flutter + EmbeddingGemma 2,谷歌发布完全端侧的 AI Edge Foresight
android·前端·flutter
君赏3 天前
基于 FlutterPatch 快速接入 Flutter 热更新
flutter
律宏阔3 天前
Dart FFI 内存管理:用 using + Arena 替代嵌套 try-finally
前端·flutter
律宏阔3 天前
Flutter 调用 Go:从 c-shared + ffigen 到 @Native + Native Assets 踩坑记录
前端·flutter