Flutter 开发实战

235课时
1K学过
8分

课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
2分钟

04 InheritedWidget-1

InheritedWidget 是一个抽象类,在 Flutter 中扮演者十分重要的角色,或者你并未直接使用过它,但是你肯定使用过和它相关的封装。

img

如上图所示,InheritedWidget 主要实现两个方法:

  • 创建了 InheritedElement ,该 Element 属于特殊 Element, 主要增加了将自身也添加到映射关系表 _inheritedWidgets【注1】,方便子孙 element 获取;同时通过 notifyClients 方法来更新依赖。
  • 增加了 updateShouldNotify 方法,当方法返回 true 时,那么依赖该 Widget 的实例就会更新。

所以我们可以简单理解:InheritedWidget 通过 InheritedElement 实现了由下往上查找的支持(因为自身添加到 _inheritedWidgets),同时具备更新其子孙的功能。

注1:每个 Element 都有一个 _inheritedWidgets ,它是一个 HashMap,它保存了上层节点中出现的 InheritedWidget 与其对应 element 的映射关系。