为什么表单在Flutter中需要GlobalKey?
他们在为什么表单在Flutter中需要GlobalKey?,flutter,Flutter,他们在表格中使用了GlobalKey 从这里开始: 全局键唯一地标识元素。全局密钥提供对 与这些元素关联的其他对象,例如 构建上下文。对于StatefulWidget,全局键还提供对 国家 具有全局键的窗口小部件在创建子树时会重新分配它们的子树 从树中的一个位置移动到树中的另一个位置。 为了重新划分它的子树,小部件必须到达它的新位置 树中的位置,该位置位于树所在的同一动画帧中 从树中的旧位置删除 使用全局键重新租用元素的成本相对较高,如下所示: 此操作将触发对上State.deactivate的
表格中使用了GlobalKey
从这里开始:
全局键唯一地标识元素。全局密钥提供对
与这些元素关联的其他对象,例如
构建上下文。对于StatefulWidget,全局键还提供对
国家
具有全局键的窗口小部件在创建子树时会重新分配它们的子树
从树中的一个位置移动到树中的另一个位置。
为了重新划分它的子树,小部件必须到达它的新位置
树中的位置,该位置位于树所在的同一动画帧中
从树中的旧位置删除
使用全局键重新租用元素的成本相对较高,如下所示:
此操作将触发对上State.deactivate的调用
关联州及其所有后代;然后强制所有小部件
这取决于要重建的InheritedWidget
如果您不需要上面列出的任何特性,请考虑使用
键、ValueKey、ObjectKey或UniqueKey
上述引文中的哪项功能正以该形式使用,因此需要一个GlobalKey
?
为什么那里需要GlobalKey,为什么其他任何键都不起作用?我认为GlobalKey
上使用的重要功能是formKey.currentState.validate()
方法,用于验证表单中的所有TextFormField
小部件。由于GlobalKey
可以访问FormState
的当前状态
在其他键类型中,例如ValueKey
无法访问FormState的当前状态,我认为GlobalKey
上使用的重要功能是formKey.currentState.validate()
方法,用于验证表单中的所有TextFormField
小部件。由于GlobalKey
可以访问FormState
的当前状态
在其他键类型中,例如ValueKey
无法访问FormState的当前状态,his是因为他们需要FormState
,并且他们通过key.currentState
获取它-您可以通过调用FormState.of
静态方法来获取FormState
,因为他们需要FormState
并且它们通过键来获取它。currentState
-您也可以通过调用Form.of
静态方法来获取FormState