Flutter是一个简单易用的神奇框架。我必须看到文档非常好,但有一些概念对我来说仍然含糊不清,例如key
参数。根据文档A Key is an identifier for Widgets, Elements and SemanticsNodes.
很清楚,但为什么我需要识别我的小部件。到目前为止,我从未在编码中使用过键。在我的代码中使用密钥有什么好处吗?感谢。
答案 0 :(得分:10)
您不需要在大多数时间使用密钥,框架会为您处理密钥并在内部使用它们来区分窗口小部件。在某些情况下,您可能需要使用它们。
一个常见的情况是,如果您需要通过键来区分小部件,ObjectKey和ValueKey可用于定义小部件的区分方式。一个示例是PageStorageKey,另一个是带有动画删除的列表:https://flutter.io/cookbook/gestures/dismissible/。
另一个例子是,如果您想要从父级访问您的孩子,您可以在父级中创建一个GlobalKey并将其传递给子级的构造函数。然后你可以做globalKey.state来获得孩子的状态(例如在按钮按回调中)。请注意,这不应该被过度使用,因为通常有更好的方法来解决它。
在您使用一个小部件直接告诉您为其子级定义键之前,您可能永远不会考虑它。