Flutter框架中使用的密钥是什么?

时间:2018-05-03 21:09:46

标签: flutter

Flutter是一个简单易用的神奇框架。我必须看到文档非常好,但有一些概念对我来说仍然含糊不清,例如key参数。根据文档A Key is an identifier for Widgets, Elements and SemanticsNodes.很清楚,但为什么我需要识别我的小部件。到目前为止,我从未在编码中使用过键。在我的代码中使用密钥有什么好处吗?感谢。

1 个答案:

答案 0 :(得分:10)

您不需要在大多数时间使用密钥,框架会为您处理密钥并在内部使用它们来区分窗口小部件。在某些情况下,您可能需要使用它们。

一个常见的情况是,如果您需要通过键来区分小部件,ObjectKey和ValueKey可用于定义小部件的区分方式。一个示例是PageStorageKey,另一个是带有动画删除的列表:https://flutter.io/cookbook/gestures/dismissible/

另一个例子是,如果您想要从父级访问您的孩子,您可以在父级中创建一个GlobalKey并将其传递给子级的构造函数。然后你可以做globalKey.state来获得孩子的状态(例如在按钮按回调中)。请注意,这不应该被过度使用,因为通常有更好的方法来解决它。

在您使用一个小部件直接告诉您为其子级定义键之前,您可能永远不会考虑它。