用户登录

显示内容页面的时候我们要请求文件信息接口获取到相关的文件数据,已经获取到的数据可以放在一个地方,这样下回再显示这个内容页面的时候,可以直接从这个地方调取文件信息数据,就不需要再去请求文件信息接口了。

在 file_show_store 里面,先添加一个数据,类型是 List?> 名字是 fileMetadataCache ,默认值可以是一个空白的列表。

再定义一个设置缓存用的动作,定义一个动作,名字是 setFileMetadataCache ,接收一个 Map 参数,名字是 data。

在这个动作里面先判断一下要设置的缓存在现有的缓存数据里存不存在,声明一个 hasCache,它的值可以用一下 fileMetadataCache.any ,当前项目是 item,返回的结果判断一 下 item?['key'] 是否等于 data['key'] 。这个 key 的值可以是文件的 id。

下面判断一下 !hasCache ,如果没有缓存,可以设置一下 fileMetadataCache 的值,等于一个列表,里面先把原有的东西放进来,...fileMetadataCache ,然后再添加一个 data。

getFileMetadataCache

再定义一个获取缓存用的方法,返回的类型是 Map? 名字是 getFileMetadataCache ,接收一个 int? 类型的参数,名字是 fileId ,也就是我们要根据提供的文件 id 的值,在缓存列表里查找一下有没有对应的缓存。

声明一个 Map? 名字是 cache,最后可以 return 这个 cache。

在上面判断一下,fileMetadataCache.isNotEmpty 并且 fileId 不等于 null ,这样可以设置一下 cache 的值,用一下 fileMetadataCache.firstWhere,当前项目是 item ,返回的结果判断一下 item?['key'] ,是否等于 fileId 。

orElse,如果没找到合适的项目,可以 return null 。

getFileById

下面修改一下 getFileById ,这里我们可以去掉这个方法的 postId 参数,因为之前我想用 postId 作为缓存的 key,现在我们可以使用 fileId 作为缓存的 key,所以就不需要这个参数了。

在这个方法里,执行了 setFile 以后,可以再声明一个 cache ,等于一个 Map ,里面添加一个 'key' ,值是 fileId,再添加一个 value,它又是一个 Map,里面添加一个 'specs' ,对应的值是在这个 store 里定义的 specs 这个计算属性。

然后再执行一下 setFileMetadataCache,把 cache 交给这个动作。

文件信息数据缓存(fileMetadataCache)《 Flutter 移动端实例:图像数据 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点