用户登录

新建一个回复列表需要用的 Store,放在 lib/reply/index 里面,名字是 reply_index_store.dart ,在文件里定义一个 Store,输入 xsa,按下 tab,可以使用我们定义好的代码片断快速创建一个 store。

包含的文件是 reply_index_store.g.dart 。 名字是 ReplyIndexStore。

属性

在这个属性的下面需要一个转换回复列表数据用的方法,这个方法跟 post_index_store 里的一个方法差不多,打开它以后,复制一下 parsePosts。把它粘贴到 ReplyIndexSotre 里面,再修改一下,选中这些 Post 类型,把它们统一换成 Reply 这个类型。 导入需要的这个 jsonDecode 。

数据

下面在数据里面,再添加一个数据,类型是 List?> 名字是 replyCache,默认让它等于一个空白的列表。

动作

在动作这里再定义一个动作,名字是 setReplyCache,接收的参数类型是 Map,在这个动作里面声明一个 test,一个方法,有个 item 参数,返回的是 item?['key'] 等于 data['key'] 。

下面声明一个 hasCache,用一下 replyCache.any ,提供一个 test,判断一下,如果 hasCache,可以把这个cache 里的项目删除掉。用一下 replyCache.removeWhere,提供一个 test。

最后可以设置一下 replyCache 的值,让它等于一个列表,先把 replyCache 原有的东西放进来,再添加一个 data。

getReplyCache

下面再定义一个方法,返回的值的类型是 Map? 名字是 getReplyCache ,接收一个 int? 参数,名字是 commentId 。

方法里声明一个 Map 名字是 cache。 然后判断一下 replyCache.isNotEmpty,并且 commentId 不等于 null 。满足条件,设置 cache 的值,让它等于 replyCache.firstWhere,提供一个 test,有个 item 参数,返回的是 item['key'] 等于 commentId 的项目。orElse,可以返回一个 null 。

最后让这个方法 return 这个 cache 。

getReplies

下面定义一个请求获取回复数据用的方法,返回的值的类型是 Future> ,名字是 getReplies,接收一个 int 参数,名字是 commentId 。

请求的接口地址是 /comments ,加上 $commentId ,然后是斜线 replies ,这个地址就是某一条特定评论的回复列表接口。

请求成功,可以声明一个 parsed ,用一下 parseReplies ,把 response.body 交给这个方法。这里这个方法的名字没有改,改成 parseReplies 。

继续再编辑 getReplies,声明一个 cache,它是一个 Map,里面添加一个 'key' ,值是 commentId ,再添加一个 'value',值是 parsed。

然后执行 setReplyCache,提供一个 cache, 最后 return 的是这个 parsed 。

在这个 cache 后面给它补上一个分号。

定义评论列表 Store(ReplyIndexStore)《 Flutter 移动端实例:回复列表 》

统计

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

社会化网络

关于

微信订阅号

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