为啥 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 而不是其他类型的键?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Flutter Navigator 2.0 示例中没有返回按钮?
为啥 drools 5.4 文档没有说明 JBPM FORM BUILDER 和与 Guvnor 的集成
为啥 libreoffice sdk 在通过 Web 服务同时创建文档时会崩溃?
为啥在使用 Flutter 模块构建 iOS 原生应用时修复“Frameworks/Flutter.framework: Permission denied”?