Flutter自定义按钮组件回调异常:初始化执行函数,点击无响应
Flutter自定义按钮组件回调函数问题修复
你的问题出在两个关键细节上,直接修改以下两处即可解决:
1. 传递回调函数时不要加括号
你在实例化SaveButtons时写了printLine(),这会立即执行函数而非传递函数引用。正确写法是直接传入函数名:
SaveButtons(onPressCallback: printLine) // 去掉后面的()
2. 组件内部正确调用回调函数
在SaveButtons的button方法里,你仅写了onPressCallback,这只是引用函数但没有执行它。需要通过widget.onPressCallback访问父组件传递的属性,并正确调用:
方式一:直接赋值函数引用(简洁写法)
onPressed: widget.onPressCallback,
方式二:在匿名函数内调用(适合需要额外逻辑的场景)
onPressed: () { widget.onPressCallback?.call(); // 加?避免空指针异常 },
修改后的完整button方法示例:
Widget button (String saveType, AppDatabase database) { return ElevatedButton( style: ElevatedButton.styleFrom( primary: colorPrimary, onPrimary: white, shadowColor: Colors.grey, elevation: margin_3dp, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(margin_5dp)), minimumSize: Size(margin_100dp, margin_40dp), ), onPressed: widget.onPressCallback, child: Text(saveType, style: TextStyle(fontWeight: FontWeight.bold, fontSize: text_size_16, color: white)), ); }
完成以上修改后,组件初始化时printLine不会执行,点击按钮时才会触发打印逻辑。
内容的提问来源于stack exchange,提问作者yoohoo
相关产品推荐
相关产品推荐

