【发布时间】:2021-08-16 18:53:09
【问题描述】:
https://flutter.dev/docs/cookbook/forms/validation
他们在那个Form中使用了GlobalKey。
从这里:https://api.flutter.dev/flutter/widgets/GlobalKey-class.html
全局键唯一标识元素。全局密钥提供访问 与这些元素关联的其他对象,例如 构建上下文。对于 StatefulWidgets,全局键也提供了访问 状态。
具有全局键的小部件在它们的子树中重新生成它们的子树 从树中的一个位置移动到树中的另一个位置。 为了重新设置它的子树,一个小部件必须到达它的新的 树中的位置在它所在的同一动画帧中 从树中的旧位置移除。
使用全局键重新设置元素的成本相对较高,因为 此操作将触发对 State.deactivate 的调用 联系国及其所有后代;然后强制所有小部件 这取决于要重建的 InheritedWidget。
如果您不需要上面列出的任何功能,请考虑使用 改为 Key、ValueKey、ObjectKey 或 UniqueKey。
该表单中使用了上述引用中的哪个功能需要GlobalKey?
为什么那里需要 GlobalKey,为什么其他任何密钥都不起作用?
【问题讨论】:
-
这是因为他们需要
FormState,并且他们通过key.currentState获得 - 你也可以通过调用Form.of静态方法获得FormState
标签: flutter