在flutter的数据持久化中, shared_preferences使用频率是非常高的,原理就不多说了,通过与原生通信,使用原生的本地存储方案, get_storage是通过文件存储的,这篇主要是讲一下我对这两个方案的理解以及使用中注意的点
shared_preferences
对于这个方案的使用,很多时候非常痛苦,因为不管是sp的初始化,还是set,get的调用都是异步的,所以导致在使用过程中需要用到大量的FutureBuilder,并且由此导致的逻辑判断也会非常多
get_storage
这种方案原理上是解决了上面异步的问题的,只需要初始化一次(虽然是异步的初始化),其后的write,read都不需要异步,对我这种强迫症来说,简直不能太舒服,但是通过了解它的原理发现,因为是文件存储,有要求读写是同步的,就导致在初始化的时候需要把文件中所有的内容都一次性读出来,这样一来随着数据量的升高,初始化需要的时间就增加了(也是没办法,想要同步只能一次性加载到内存)
总结
在我的使用习惯当中,会根据上述的方案特点结合两者使用
对于大量的缓存,我会用shared_preferences来存储,因为他不需要同步,就是当做一个网络请求耗时操作,但是对于表示一些状态的,比如是否是第一次启动app,是否进入过某个页面,甚至是用户信息,本身的数据量比较小,我都会存放到get_storage,享受到的就是同步增删改的优势
网友评论