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

Flutter开发:如何让计数器在达到预设上限的最后一次点击时触发振动

问题核心原因
  • 你的现有逻辑是先判断当前计数是否未达上限,再执行加1操作,计数到达上限的那次点击只会完成计数加1,不会触发振动逻辑,振动要等到下一次点击时才能检测到计数已达上限,所以会晚触发一次。
    对应你设定上限为5的场景:第5次点击前_counter值为4,判断4≠5,执行加1到5,没有触发振动;第6次点击时检测到_counter=5,才会触发振动,和预期不符。
修复后的代码实现

调整判断顺序,在计数加1后立刻判断是否到达上限,到达则直接触发振动即可:

int _counter = 0;
int _maxCount = 5; // 变量名语义化,后续自定义上限只要修改这个值即可

onTap: () async {
  setState(() {
    // 还没到上限时才允许计数累加
    if (_counter < _maxCount) {
      _counter++;
      // 加1后刚好到达上限,立刻触发振动
      if (_counter == _maxCount) {
        Vibration.vibrate(duration: 500);
      }
    }
    // 已达上限后点击不做任何操作
  });
},
调整说明
  • 替换原语义模糊的_five变量为_maxCount,后续自定义上限不需要修改逻辑代码,仅调整这个变量的值即可
  • 删掉了冗余的空分支和无意义的_counter = _counter + 0代码,逻辑更简洁
  • 调整后的逻辑刚好在计数累加到上限的那次点击触发振动,完全匹配需求

内容的提问来源于stack exchange,提问作者Ary Anzh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:18:03