Shorthand 检查 if 条件中使用的 bool 变量的可空性

Shorthand of checking the nullability of a bool variable used in an if condition

Future<bool?> f() async => true;

void main() async {
  final proceed = await f();
  if (proceed) {...} // Error
  if (proceed != null && proceed) {...} // Works but too verbose
}

是否有任何 shorthand 或更好的方法来代替编写长 proceed != null && proceed 支票?我知道我可能会遗漏一些如此微不足道的东西。

注意:我知道可以为 proceed 提供默认值,但这不是我的用例。当 bool 实际上不是 null.

时,Bang 运算符可以做到这一点

听起来像是可以使用语言教程中记录的 ?? 运算符的情况: https://dart.dev/guides/language/language-tour#conditional-expressions

它将允许您将长 if 语句重写为:

if (proceed ?? false) {...}

??这里的意思是我们要使用proceed的值,只要不是null即可。在 null 的情况下,我们希望使用 false 作为值。

这样做的一个缺点是,与下面的 proceed 之后被提升为不可空类型的情况相比,Dart 似乎没有对 proceed 进行任何类型提升:

if (proceed != null && proceed) {...}

不确定是否存在 Dart 问题。