Flutter 中的所有小部件都具有“bool this.mounted”属性吗?

祝你平安

我正在研究 Flutter 的小部件生命周期并停在 this.mounted 布尔变量的点上,它确实直接存在于 State 类中,它只能与 StatefulWidget 作为子类连接,永远不会/用 StatelessWidget 做了。

问题是...

是否所有小部件实际上都包含 bool this.mounted 变量,正如某些人在 [this accepted answerthis articlethis 中所说的那样,还是不包含?

我在 Flutter 中搜索,仅在 mounted 类中找到了这个 State 变量,然后我进一步查找在 mount() 类中找到了一个名为 Element 的函数。

StatelessWidget 类连接到 StatelessElement 类,该类从 ComponentElement 扩展而来, Element 直接继承自 类。

我现在真的很困惑,也许我误解了这一点,我需要对此进行解释!谢谢。

stack overflow Do all widgets in Flutter have the "bool this.mounted" property?
原文答案
author avatar

接受的答案

不知道为什么答案说 all widgets 。但是 NO

只有 State<T> 对象是具有名为 gettermounted 的对象。

这很容易验证,只要 cmd + clickctrl + click 在您班级中的任何 State 上,这会将您重定向到名为 framework.dart 的文件,该文件位于 flutter -> package -> flutter -> lib -> src -> widgets 路径。

搜索 mounted 并且这一行是您将找到的唯一实际声明。

bool get mounted => _element != null;

这是 State 类代码的一部分。


答案:

作者头像

在 Flutter 的未来版本中(目前在稳定频道上是 3.3.4BuildContext 将有一个 getter bool mounted 所以你可以在无状态小部件中使用它:

请参阅此 PR,其中添加了吸气剂: https://github.com/flutter/flutter/pull/111619