背景
Flutter提供了用于Widget间共享数据的InheritedWidget,当InheritedWidget发生变化时,它的子树中所有依赖了它的数据的Widget都会进行rebuild,这使得开发者省去了维护数据同步逻辑的麻烦。InheritedWidget看名字就是一个Widget,那么它是如何做到数据共享,如何做到通知更新的呢?下面我们一起来看看。
InheritedWidget用法
InheritedWidget用法分为以下几个步骤;
- 自定义Widget继承自InheritedWidget,并且自定义static of方法,用于child获取当前实例
- 实现
InheritedWidtet
类中的updateShouldNotify
方法,用于返回update条件; - 当数据变化时,调用自定义widget的State类中的setState()方法,触发整棵InheritedWIdget tree的更新。
代码就不贴了,相当简单。下面我们来一步步分析它的原理。
原理
InheritedWidget源码
先来看看InheritedWidget的源码