返回
如果 Flutter 局部刷新技术不是 Inherited,那将会是什么?
前端
2023-10-17 02:16:20
Inherited 局部刷新的原理
Inherited 局部刷新技术是基于 依赖关系 来实现的。每个组件都有一个 InheritedWidget 祖先,这个祖先组件提供了一些数据,这些数据可以被它的子组件使用。当 InheritedWidget 祖先组件发生变化时,它的子组件就会收到通知,并重新构建。
这种方式可以实现局部刷新,因为只有与 InheritedWidget 祖先组件有依赖关系的组件才会重新构建。其他的组件不受影响。
另一种实现方式
如果 Flutter 没有 Inherited 技术,那么局部刷新可以采用另一种方式来实现。这种方式是使用 ChangeNotifier 类。ChangeNotifier 类是一个观察者模式的实现,它可以监听数据的变化,并通知它的监听者。
组件可以通过调用 ChangeNotifier 的 addListener() 方法来监听数据的变化。当数据发生变化时,组件就会收到通知,并重新构建。
这种方式也可以实现局部刷新,因为只有监听了 ChangeNotifier 的组件才会重新构建。其他的组件不受影响。
比较
Inherited 局部刷新技术和 ChangeNotifier 局部刷新技术都有自己的优缺点。
Inherited 局部刷新技术的一个优点是,它不需要手动管理 ChangeNotifier 。ChangeNotifier 局部刷新技术的一个优点是,它可以更细粒度地控制局部刷新。
结论
Flutter 局部刷新技术有很多种,Inherited 和 ChangeNotifier 是其中两种最常用的技术。这两种技术都有自己的优缺点,开发者可以根据自己的需要选择合适的技术。
附录
一些有用的链接:
一些有用的例子: