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
网友评论