如何在 Dart 的 Sound Null Safety 中递增/递减可为空的表达式:`<nullable_variable>!++`?

Dec*_*oth 6 dart flutter dart-null-safety

我在Dart 中使用Sound Null Safety,我有以下代码

int? _counter;

void _incrementCounter() {
  setState(() {
    if (_counter!=null)
      _counter++;
  });
}
Run Code Online (Sandbox Code Playgroud)

现在,由于 _counter 不是局部变量,因此无法提升它(请参阅此其他线程以了解原因),因此我必须通过添加bang 运算符( )来告诉Dart我确信_counter它不为空。因此我写了!

_counter!++;
Run Code Online (Sandbox Code Playgroud)

但这不起作用:我收到错误消息

非法赋值给不可赋值的表达式。

那么,有没有办法解决这个问题,而无需显式编写

_counter = _counter! + 1;
Run Code Online (Sandbox Code Playgroud)

Ale*_*uin 9

它的工作按计划今天,你必须使用_counter = _counter! + 1;,如果你保持int?类型的_counter

将来这可能会改变关于Dart Null-Asserting Composite Assignment 的提案。