Flutter购物车计数器点击加减按钮无更新且无报错问题求助
问题解决:Flutter购物车计数器点击不更新数值
我一眼就发现了问题的核心——你的按钮点击事件绑定方式出错了!
在CartCounter组件的buildOutlineButton方法里,OutlinedButton的onPressed被你写成了press(),这会导致组件构建时就直接执行了press函数,而不是把函数引用传递给按钮。所以点击按钮的时候,根本不会触发对应的状态更新逻辑。
修复后的代码
把onPressed: press()改成onPressed: press(同时建议把press的类型从Function更严谨地指定为VoidCallback):
SizedBox buildOutlineButton({required IconData icon, required VoidCallback press}) { return SizedBox( width: 40, height: 32, child: OutlinedButton( style: OutlinedButton.styleFrom( padding: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(13.0)), ), // 这里把press()改为press,传递函数引用而非立即执行 onPressed: press, child: Icon(icon), ), ); }
为什么这样改?
Flutter的onPressed参数要求的是一个VoidCallback类型的函数(无参数、无返回值的函数)。如果你写press(),相当于立即执行了这个函数,并把它的返回值(这里是void)赋值给onPressed,这完全不符合按钮点击事件的要求。而直接写press是把函数本身的引用传递给onPressed,这样按钮被点击时才会调用这个函数,触发setState更新计数器数值。
改完之后,你再点击加减按钮,计数器的数值应该就能正常更新了。
内容的提问来源于stack exchange,提问作者Hassan Waqqaf
相关产品推荐
相关产品推荐

