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