首页 > 解决方案 > 如何在 Dart 的 Sound Null Safety 中增加/减少可为空的表达式:`!++`?

问题描述

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

int? _counter;

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

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

_counter!++;

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

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

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

_counter = _counter! + 1;

标签: flutterdartdart-null-safety

解决方案


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

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


推荐阅读