Flutter中元件的重构与状态变化及生命周期钩子

首先我们明确一点,父元件的重构,会导致其所有子元件重构。当元件为状态元件时,状态改变并发出通知,子元件会响应通知,全部重构子树,注意,状态元件本身实例是不是会变化的,除非它的父元件重构了它。另外,无论视图上有没有用到状态,状态元件的子树所有元件例无一外地执行build()方法重构。
这就是:setState 后必然会 build,必然会导致子树全部重构;

然后是关于这三个与State有关的元件的生命周期有关的钩子函数:

State.didChangeDependencies()

这个方法在何种情形会调用?要看它的祖先(或上级)元件,如果它的某一级祖先是SomeInheritedWidget,而且它本身内部使用SomeInheritedWidget的数据,当这个祖先SomeInheritedWidget实例被换了时,此方法会被它的State调用。换个说法就是它所依赖的祖先变换了一个新的实例。

State.didUpdateWidget()

这个方法在何时会调用?比较简单,看它自己的实例是换了一个新的实例,如果是,此方法会被它的State调用。换名说话就是它自己变换了一个新的实例。

InheritedWidgets.updateShouldNotify()

这个方法存在于SomeInheritedWidget中,是一个重写方法。如果总是返回false,那么,它的下级元件中如果有Stateful元件,且State中调用了它的数据,它自己的实例在树中不管变没变,State.didChangeDependencies()永远不会调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值