BuildContext 与状态上下文

Kev*_*ray 7 flutter

我注意到状态的构建方法传入了一个 BuildContext,而且我还注意到状态本身也有一个名为 context 的成员。我想知道什么时候使用 BuildContext 合适,什么时候使用成员变量合适?它们可以互换吗?

是否有时使用其中一种会导致错误,我们如何采取措施确保不会发生这种情况?

rmt*_*zie 7

从扑文档用于State和构建功能:

BuildContext 参数始终与此 State 对象的上下文属性相同,并将在此对象的生命周期内保持不变。此处冗余提供了 BuildContext 参数,以便此方法与 WidgetBuilder 的签名相匹配。


Rém*_*let 5

它们是严格平等的。

它可能并不明显,但BuildContext作为参数传递的build永远不会改变。

context的字段仅指State向该常量BuildContext。为什么是重复的?因为StatefulWidgets往往会随着时间的推移而更新。因此,您可能需要访问此BuildContext内部方法,例如didUpdateWidget.

StatelessWidget不需要它,因为它只是作为一种build方法。