如何检查Dart构造函数传入的函数参数是否为null
问题:构造函数可选函数参数的null判断逻辑问题
我需要判断构造函数传入的函数是否为null,但即便未传入任何参数,检查时也无法按预期控制代码执行逻辑。
我的Widget代码如下:
const CropImageWidget({ this.navBack, super.key, }); final Function? navBack;
我原本是这样检查navBack是否为null的:
if (widget.navBack == null) { Navigator.pop(context); } widget.navBack!();
实际运行后发现,即便navBack为null,widget.navBack!()依然会执行并报错。后来才意识到,我错误认为Navigator.pop(context)执行后会终止后续代码,但实际上页面弹出操作不会中断当前代码的执行流程,所以不管null判断是否成立,后续的函数调用都会执行。
解决方案
改用if/else分支逻辑,确保两种情况只会执行其中一种:
if (widget.navBack == null) { Navigator.pop(context); } else { widget.navBack!(); }
内容的提问来源于stack exchange,提问作者WilliamKose
相关产品推荐
相关产品推荐

