文章目录
- 知识回顾
- 知识总结
- 经验分享
我们在上一章回中介绍了全局共享数据相关的内容,本章回中将对这些内容做总结.闲话休提,让我们一起Talk Flutter吧。
知识回顾
数据共享也叫状态管理,主要通过InheritedWidget
类实现,不过它局限于父组件和子组件之间的数据共享。于是我们引入了三方包:provider
,该包本质上是对InheritedWidget类的封装,不过它可以在任意组件之间共享数据,我们介绍了该包的使用方法和获取共享数据的方法,并且配有示例代码。
Flutter
是响应式编程框架,所有组件的更新都是基于状态管理的,因此状态管理非常重要,一些三方公司和爱好者相继发布了各种状态管理包,不过综合考虑之下还是选择了provider包,它使用方便,便于理解,而且得到了官方的认可。
回顾完前面章回中的知识后,我们对这些知识做一个统一的总结。
知识总结
数据共享包,或者叫状态管理包provider
在使用时主要分为三个大的步骤,详细如下:
- 创建数据共享类,并且在数据更新时通知监听器;
- 把数据共享类和顶层Widget通过ChangeNotificator关联起来;
- 在应用其它地方获取共享数据 ,获取的方式有三种:Provide, Consumer和Selector;
这三个步骤相当于搭建好了共享数据的框架,接下来就可以从框架中获取数据了,获取的方式有三种:
- Provide类通过静态方法of()直接获取共享数据 ;
- Consumer类通过builder属性间接获取共享数据 ;
- Selector类通过selector属性间接获取共享数据 ;
经验分享
我们在上面的小节中对数据共享相关的知识进行了回顾和总结,接下来分享我总结的经验:
- 如果只是在父子组件之间共享数据,那么使用InheritedWidget类就可以,简单轻巧,使用方便;
- 如果是在全局共享数据,建议使用provider包,当然也可以使用其他的包,这里不做详细介绍;
- 如果只是获取共享数据,那么使用Provider和它的of()方法就可以;
- 如果既需要获取数据又需要更新组件,那么建议使用Consumer,它的性能比Provider好;
- selector具备Consumer所有的功能和优点,它还提供数据类型转换的功能。主要用来转换数据类型;
- Consumer和Selector提供了类似Consumer2,Consumer3这样的类,可以同时管理多个共享数据;
看官们,关于"数据共享总结"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!