【发布时间】:2018-03-27 18:57:46
【问题描述】:
我注意到一个 state 的 build 方法传入一个 BuildContext,我还注意到 State 本身也有一个名为 context 的成员。我想知道什么时候适合使用 BuildContext,什么时候适合使用成员变量?它们可以互换吗?
有时使用其中一个会导致错误,我们如何采取措施确保我们不会这样做?
【问题讨论】:
标签: flutter
我注意到一个 state 的 build 方法传入一个 BuildContext,我还注意到 State 本身也有一个名为 context 的成员。我想知道什么时候适合使用 BuildContext,什么时候适合使用成员变量?它们可以互换吗?
有时使用其中一个会导致错误,我们如何采取措施确保我们不会这样做?
【问题讨论】:
标签: flutter
来自 documentation 的颤振 State 和构建函数:
BuildContext 参数始终与此 State 对象的上下文属性相同,并将在此对象的生命周期内保持相同。 BuildContext 参数在此处冗余提供,以便此方法与 WidgetBuilder 的签名相匹配。
【讨论】:
它们是严格相等的。
这可能并不明显,但作为参数传递给build 的BuildContext 永远不会改变。
State 的 context 字段仅指向该常量 BuildContext。
为什么要重复?因为StatefulWidgets 往往会随着时间的推移而更新。
所以你可能需要在didUpdateWidget等方法中访问这个BuildContext。
StatelessWidget 不需要,因为它仅作为build 方法。
【讨论】: