如何在Dart中为可选值使用带条件的assert断言?
如何在Dart的assert断言中添加条件判断?
当然可以实现这种“仅当可选参数不为null时才进行断言检查”的需求,但你示例里的写法有语法错误——Dart的assert接受的是布尔表达式,不能直接在里面写if语句。
正确的写法是用逻辑运算符组合条件,比如用||(逻辑或)来表达:要么参数为null,要么参数满足大于0的要求:
class Spinner extends StatefulWidget { const Spinner({ super.key, this.durationInSeconds = 6, required this.child, this.stopAfter, }) : assert(stopAfter == null || stopAfter > 0); }
这个表达式的逻辑是:
- 如果
stopAfter是null,断言直接通过 - 如果
stopAfter不为null,就会检查它是否大于0,不满足则触发断言错误
你也可以用条件表达式来写,逻辑和上面完全一致,只是写法不同:
assert(stopAfter == null ? true : stopAfter > 0);
两种写法都能实现你的需求,其中逻辑或的写法更简洁直观,是Dart里常用的方式。
内容的提问来源于stack exchange,提问作者mirkancal
相关产品推荐
相关产品推荐

