You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:45:04