8

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

int? _counter;

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

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

_counter!++;

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

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

那么,有没有一种方法可以解决这个问题而无需显式编写

_counter = _counter! + 1;
4

1 回答 1

14

它今天按预期工作,如果_counter = _counter! + 1;您保留int?_counter.

将来,关于Dart Null-Asserting Composite Assignment 提案,这可能会发生变化。

于 2021-03-04T17:28:39.080 回答