Flutter源码中Te​​xt小部件的RenderObject类在哪里

Posted

技术标签:

【中文标题】Flutter源码中Te​​xt小部件的RenderObject类在哪里【英文标题】:Where is the RenderObject class for the Text widget in the Flutter source code 【发布时间】:2019-11-09 23:51:20 【问题描述】:

我正在研究 Text 小部件在 Flutter 中的工作原理。我知道小部件只是蓝图。它是实现小部件的元素。并且该元素制作了一个 RenderObject 来在屏幕上布局和绘制小部件。我认为这就是它的工作方式。

文本小部件的源代码很容易找到。这是here。 Flutter引擎中也有文字相关的样式类here。 C/C++ 中的低级文本库类是here。

但我似乎找不到任何名为RenderText 的东西。谁在做文本渲染?它的元素是什么?

【问题讨论】:

【参考方案1】:

我找到了。它被称为RenderParagraph,而不是RenderTextText 小部件在其构建方法中创建一个 RichText 小部件。 RenderParagraphRenderObject 对应于 RichText 小部件。另一个重要的类是TextPainterRenderParagraph 使用它来协调绘制段落文本。绘画本身在 C/C++ 的 LibTxt 库中甚至更低。

【讨论】:

以上是关于Flutter源码中Te​​xt小部件的RenderObject类在哪里的主要内容,如果未能解决你的问题,请参考以下文章

flutter如何从TextWidget复制文本Flutter专题34

来自 QT QWidget 的 X11 小部件

Flutter:是不是可以替换小部件本身?

Flutter:在堆栈小部件中动态添加拖放小部件

Flutter 小部件包裹在自定义小部件中

Flutter/Dart:我的小部件树中可以有多个带有状态的小部件吗?