2分钟
04 InheritedWidget-1
InheritedWidget 是一个抽象类,在 Flutter 中扮演者十分重要的角色,或者你并未直接使用过它,但是你肯定使用过和它相关的封装。
如上图所示,InheritedWidget 主要实现两个方法:
- 创建了
InheritedElement
,该 Element 属于特殊 Element, 主要增加了将自身也添加到映射关系表_inheritedWidgets
【注1】,方便子孙 element 获取;同时通过notifyClients
方法来更新依赖。 - 增加了
updateShouldNotify
方法,当方法返回 true 时,那么依赖该 Widget 的实例就会更新。
所以我们可以简单理解:InheritedWidget 通过 InheritedElement
实现了由下往上查找的支持(因为自身添加到 _inheritedWidgets
),同时具备更新其子孙的功能。
注1:每个 Element 都有一个
_inheritedWidgets
,它是一个HashMap
,它保存了上层节点中出现的 InheritedWidget 与其对应 element 的映射关系。
学员评价