Flutter中的StatelessWidget及其生命周期

柳随风
发布于 2020-9-4 15:31
浏览
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可能在如下三种场景会被调用。

 

  1. StatelessElement也可以说statelessWidget 首次插入树中时调用;
  2. 父Widget改变了StatelessElement的widget时,即通过StatelessElement的update方法调用到。
  3. 它所依赖的InheritedWidget改变时。

 

总结


StatelessWidget通过StatelessWidget.createElement()创建了StatelessElement,StatelessElement关联了StatelessWidget,并使用StatelessWidget配置自身。其中StatelessElement将其build方法通过关联的widget外放到StatelessWidget的实现中。因而他的生命周期依赖于StatelessElement,而StatelessElement的生命周期相对简单只有build,update。

 

为了能更好的理解StatelessWidget的生命周期,我画了一张关于StatelessElement、Component、Element的关系图。

Flutter中的StatelessWidget及其生命周期-鸿蒙开发者社区

作者:QiShare
来源:掘金

分类
标签
已于2020-9-4 16:19:33修改
1
收藏
回复
举报
回复
    相关推荐