Flutter点赞切换按钮实现时widget.items.likes持续递增问题求解
Flutter点赞按钮切换效果失效问题修复方案
问题根因
你当前代码中onPressed的判断逻辑存在根本性错误:widget.items.likes < widget.items.likes + 1这个表达式永远为真,所以每次点击都会触发点赞数+1的分支,永远不会走到减1的逻辑,才会出现点赞数持续递增的问题。
修复方案
你需要额外维护一个是否已点赞的状态变量,同时存储初始点赞数用于取消点赞时恢复,修改后代码如下:
// State类内定义状态变量 bool _isLiked = false; late int _originalLikes; @override void initState() { super.initState(); // 组件初始化时保存原始点赞数 _originalLikes = widget.items.likes; } IconButton( padding: EdgeInsets.all(0), icon: Icon(Icons.favorite), // 直接通过点赞状态控制颜色 color: _isLiked ? Colors.pink : Colors.white, splashColor: Colors.pink, iconSize: 30, onPressed: () { setState(() { if(_isLiked) { // 已点赞状态下点击,恢复原始点赞数 widget.items.likes = _originalLikes; } else { // 未点赞状态下点击,点赞数+1 widget.items.likes = _originalLikes + 1; } // 切换点赞状态 _isLiked = !_isLiked; }); }, ),
注意事项
- 不要直接通过点赞数的动态大小做判断,避免页面其他逻辑修改点赞数后触发逻辑混乱
- 所有交互状态围绕
_isLiked变量更新即可,完全匹配你要的点击切换需求
内容的提问来源于stack exchange,提问作者JHUN ANTHONY SACAPAÑO
相关产品推荐
相关产品推荐

