显示内容页面的时候我们要请求文件信息接口获取到相关的文件数据,已经获取到的数据可以放在一个地方,这样下回再显示这个内容页面的时候,可以直接从这个地方调取文件信息数据,就不需要再去请求文件信息接口了。
在 file_show_store 里面,先添加一个数据,类型是 List
再定义一个设置缓存用的动作,定义一个动作,名字是 setFileMetadataCache ,接收一个 Map
在这个动作里面先判断一下要设置的缓存在现有的缓存数据里存不存在,声明一个 hasCache,它的值可以用一下 fileMetadataCache.any ,当前项目是 item,返回的结果判断一 下 item?['key'] 是否等于 data['key'] 。这个 key 的值可以是文件的 id。
下面判断一下 !hasCache ,如果没有缓存,可以设置一下 fileMetadataCache 的值,等于一个列表,里面先把原有的东西放进来,...fileMetadataCache ,然后再添加一个 data。
getFileMetadataCache
再定义一个获取缓存用的方法,返回的类型是 Map
声明一个 Map
在上面判断一下,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 交给这个动作。