Flutter中的StatelessWidget及其生命周期
2020-08-10 本文已影响0人
沐灵洛
StatelessWidget
是什么?
继承自Widget
,状态不可变,用于描述UI展示中相对固定的部分,如纯展示,不会被改变的UI。
abstract class StatelessWidget extends Widget {
const StatelessWidget({ Key key }) : super(key: key);
@override
StatelessElement createElement() => StatelessElement(this);
@protected
Widget build(BuildContext context);
}
通过其类的定义能够看到StatelessWidget
配置StatelessElement
。
方法概述
-
build
方法:
描述:用于描述当前widget
所代表的UI。
调用时机: framework
会使用build
方法返回的widget
注入当前StatelessElement
或通过Widget.canUpdate
选择合适的更新方式。
场景: build
可能在如下三种场景会被调用。
-
StatelessElement
也可以说statelessWidget
首次插入树中时调用; - 父
Widget
改变了StatelessElement
的widget
时,即通过StatelessElement
的update
方法调用到。 - 它所依赖的
InheritedWidget
改变时。
总结
StatelessWidget
通过StatelessWidget. createElement()
创建了StatelessElement
,StatelessElement
关联了StatelessWidget
,并使用StatelessWidget
配置自身。其中StatelessElement
将其build
方法通过关联的widget
外放到StatelessWidget
的实现中。因而他的生命周期依赖于StatelessElement
,而StatelessElement
的生命周期相对简单只有build
,update
。
为了能更好的理解StatelessWidget
的生命周期,我画了一张关于StatelessElement
、Component
、Element
的关系图。