打开 post_actions.dart,在这个 build 方法里面,先声明一个 likeCreateModel ,用一下 context.watch() ,类型是 LikeCreateModel。在文件顶部要导放一个包,导入的是 package:provider/provider.dart。
再编辑一下 build 方法里定义的这个 onTapLikeAction ,在这个方法里判断一下 post.liked 是不是等于 0,然后用一组 try,catch ,在这个 catch 的前面用 on 限定一下要处理的异常的类型,设置成 HttpException。
然后用一下 ScaffoldMessenger.of(context).showSnackBar 显示一个 SnackBar,content 用一个 Text 小部件,文字是 e.message。
再用 async 标记一下这个 onTapLikeAction 方法。在 try 这个区块里要请求点赞接口,await,用一下 likeCreateModel.createUserLikePost,提供一个 post.id!
请求成功以后,可以执行一下 liked() ,再找个地方定义一下这个方法,名字是 liked,在这个方法里我们可以直接设置一下 post.liked 它的值,让它等于 1,表示用户赞过这个内容。下面再更新一下点赞数量,执行一下 increaseTotalLikes()。
在上面再定义一个方法,名字是 increaseTotalLikes,在这个方法里设置一下 post.totalLikes,让它等于 post.totalLikes! + 1 。
测试
下面可以测试一下,找一个还没有被当前用户赞过的内容,按一下这个心形小图标,会改变这个点赞状态,同时点赞数量也会有变化。