为啥 Flutter 文档在创建 Form 时要求使用 GlobalKey 而不是其他类型的键?
Posted
技术标签:
【中文标题】为啥 Flutter 文档在创建 Form 时要求使用 GlobalKey 而不是其他类型的键?【英文标题】:Why does Flutter doc ask you to use GlobalKey when creating Form instead of other types of keys?为什么 Flutter 文档在创建 Form 时要求使用 GlobalKey 而不是其他类型的键? 【发布时间】:2020-01-16 11:09:18 【问题描述】:根据颤振文档https://flutter.dev/docs/cookbook/forms/validation,它说如下。
创建表单时,提供一个 GlobalKey。
但是,GlobalKey
doc 表示此密钥价格昂贵,建议开发人员使用其他类型的密钥。
考虑使用 Key、ValueKey、ObjectKey 或 UniqueKey(而不是 globalKey)
将GlobalKey
用于Form
有什么好处?
【问题讨论】:
【参考方案1】:我认为这些文档很容易解释。
GlobalKey:在整个应用程序中唯一的密钥。
当您创建 Form
时,您希望它是唯一的,并且使用 GlobalKey
您可以识别表单。
并且文档警告您在多个地方避免使用GlobalKey
,例如,如果您使用ListView
并分配每个孩子GlobalKey
,这是一种不好的方法,但是使用GlobalKey
并没有什么坏处如果你小心使用它。
【讨论】:
如果我在应用程序中使用唯一字符串构造常规Key
... 1. 是否等同于使用GlobalKey
? 2. 这样可以吗?
1.不,这不等于GlobalKey
,因为如果您分配一个小部件Key("unique_string")
,然后如果该小部件从小部件树中删除,您仍然可以使用上述键创建另一个小部件而没有任何问题,但是使用GlobalKey
,您不能只这样做,它在您的小部件树的整个生命周期中都是独一无二的。如果您尝试将相同的 GlobalKey
分配给 2 个小部件,则会在 2 个地方使用相同的 GlobalKey
时出现异常。 GlobalKey
比其他 Key
s 非常独特。
为什么我最好首先识别我的表单?如果我不给我的表单一个唯一的键会发生什么?以上是关于为啥 Flutter 文档在创建 Form 时要求使用 GlobalKey 而不是其他类型的键?的主要内容,如果未能解决你的问题,请参考以下文章