用户登录

如果用户还没有赞过这个内容,点按这个内容的心形小图标可以给服务端的点赞内容接口发个请求,点赞内容需要验证用户身份,要在请求的头部里带着用户的令牌,所以我们可以使用 AppService 里的 apiHttpClient 发送这个请求。

在项目下面新建一个文件,放在 lib/like/create 里面,名字是 like_create_model.dart,在这个文件里定义一个类,名字是 LikeCreateModel ,让它继承一下 ChangeNotifier 。

类里面声明一个属性,类型是 AppService 名字是 appService,然后添加一个构造方法,添加一个带名字的参数,用 required 标记一下,this.appService。

再定义一个方法,名字叫 createUserLikePost ,接收一个 int 类型的参数,名字是 postId,它的值就是要点赞的内容的 id 号。用 async 标记一下这个方法。

在方法里面声明一个 uri,值可以用 Uri.parse 处理一个点赞接口地址,AppConfig,导入这个 AppConfig,先用一下它里面的 apiBaseUrl,然后是 /posts/ 后面是 $postId,内容的 id,斜线 like。

声明一个 response,表示请求得到的响应,await ,用一下 appService.apiHttpClient 上面的 post 方法,请求的地址是 uri。 下面再声明一个 responseBody,用 jsonDecode 处理一下 response.body 。

下面可以判断一下,如果 response.statusCode 等于 201,可以执行一下 notifyListeners(), 如果响应的状态码不是 201,就可以 throw 一个异常,新建一个 HttpException 异常,异常信息是 responseBody 里的 message ,如果没有值,这里可以是网络请求出了点问题 🌋 。

HttpException

或者我们也可以这样,修改一下之前定义的这个 HttpException ,先剪切一下这个默认的异常信息,然后打开 HttpException,先用 late 标记一下这个 message 属性,然后修改一下构造方法,让它接收一个 String 或 null 类型的 message 参数,在这个构造方法里,设置一下 this.message,让它等于 message,判断一下,如果这个 message 参数的值是 null,默认可以让 message 属性的值等于这个网络请求出了点问题 🌋 。

定义点赞内容模型《 Flutter 2:内容点赞 》

统计

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

社会化网络

关于

微信订阅号

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