Flutter子Widget调用setState时VoidCallback回调函数未触发怎么办
核心问题
你在子组件触发回调的位置,仅引用了VoidCallback函数对象,没有实际执行该函数,因此父组件的逻辑不会被触发。
你子组件onChanged中的代码存在书写疏漏:
print('call callback'); widget.callback; // 此处仅访问函数对象,未执行
修复方案
在回调变量后添加括号,触发函数执行即可:
print('call callback'); widget.callback();
补充优化建议
- 若后续回调可能被设为可选参数,可使用空安全调用写法避免空异常:
widget.callback?.call() - 父组件当前把
callback函数定义在build方法内部,每次组件重绘都会重新生成函数对象,建议提到类的成员方法层级,减少不必要的性能开销。
内容的提问来源于stack exchange,提问作者Younghak Jang
相关产品推荐
相关产品推荐

