美文网首页
Widget、BuildContext、State、Inheri

Widget、BuildContext、State、Inheri

作者: 一方乌鸦 | 来源:发表于2020-06-14 14:42 被阅读0次

1. Widget 概念

在 Flutter 中,几乎所有东西都是widget。
把widget当成一个可视化的组件,或者把它当作是一个与程序的可视方面交互的组件

2. BuildContext 概念

BuildContext是一个指向Widget在树中位置的引用,简单地说,BuildContext是widget树中的一部分。
每一个BuildContext只关联一个Widget,BuildContext成员变量中保存一个widget。
BuildContext也是一个树状结构,就像Widget的树结构一样。
BuildContext中的可获取的变量范围包括他自己和祖先BuildContext。
每一个BuildContext都可以通过context.findAncestorWidgetOfExactType(targetType)轻松的获取祖先widget,
但是并不推荐通过BuildContext获取子孙widget。

3. State 概念

State定义了StatefuleWidget的行为部分,包括了Widget的交互和变化,从另外的角度来说,也就是布局和组件行为的交互和变化。
State中的任何变化都会引起Widget的rebuild。

4. 重点:State和BuildContext的关系

State的成员变量中存了一个BuildContext。
对于一个StatefulWidget,他的State会和BuildContext联合在一起,这种联合是永久的,State不会改变它对应的BuildContext。
即使一个BuildContext被移除BuildContext树,State还是和这个BuildContext联合在一起。
一旦State和BuildContext联合在一起,State的状态就变成了mounted,同时这个State只能访问它对应的那个BuildContext。

5. InheritedWidget 概念

InheritedWidget是一个可以向下分享和传播信息的组件。
InheritedWidget 既不是StatefulWidget也不是StatelessWidget,它继承了ProxyWidget。

更多
https://medium.com/flutter-community/widget-state-buildcontext-inheritedwidget-898d671b7956

相关文章

网友评论

      本文标题:Widget、BuildContext、State、Inheri

      本文链接:https://www.haomeiwen.com/subject/pqmxxktx.html