在flutter中,尽管已经可以通过状态提升实现小部分的值传递,用回调函数的方法去修改父类的值,在父类调用setstate相当于重新rebuild了父类以及子组件的全部组件,而我们只需要看到子组件的内容发送改变,对此性能上无疑是浪费的。
所以需要对组件进行封装,使每次更新只涉及到需要的子组件,这也是性能优化以及解耦的一种解决方案。
新建一个controller类继承ChangeNotifier
私有化成员变量,设置get set方法,set数据的时候调用notifyListeners函数,通知框架需要更新到新的数据
通过ListenableBuilder组件监听需要更新的ChangeNotifier对象
每次数据更新使调用set方法都会调用notifyListeners函数,在listenable又会监听到数据的改变,从而进行重绘。
评论 (0)