如何 increment/decrement Dart 的 Sound Null Safety 中的可空表达式:`<nullable_variable>!++`?

How to increment/decrement a nullable expression in Dart's Sound Null Safety: `<nullable_variable>!++`?

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

int? _counter;

void _incrementCounter() {
  setState(() {
    if (_counter!=null)
      _counter++;
  });
}

现在,由于 _counter 不是局部变量,它不能被提升(参见 了解原因),所以我必须告诉 Dart 我是通过添加 bang 运算符 (!) 确保 _counter 不为空。于是我写了

_counter!++;

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

Illegal assignment to non-assignable expression.

那么,有没有办法在不需要显式写入的情况下解决这个问题

_counter = _counter! + 1;

今天它按预期工作,如果您将 int? 保留为 _counter 的类型,则必须使用 _counter = _counter! + 1;

将来这可能会根据提案 Dart Null-Asserting Composite Assignment 进行更改 .