我正在使用WebStorm和Dart Angular,但在某种严格或检查模式下遇到问题。

每当我使用默认的WebStorm配置运行该应用程序时,都会收到失败的断言Observer reaction functions should not change model.boolean expression must not be nulltype 'SubListIterable' is not a subtype of type 'List<Tag>'

据我了解,这是因为Dart VM正在检查模式下运行,我想将其关闭。如果Dartium很重要,则使用--no-sandbox --flag-switches-begin --flag-switches-end选项启动。

当我在Chrome中打开页面时,一切都很好,但是我当然无法调试。

编辑:第一个错误显然与检查模式无关。这是我尝试实现的代码片段:

List get getCorrectTags {
  if(this.allowTags)
    return this.tags.map((t) => t.name).toList();
  else
    return this.contentTags;
}

当前的解决方案是这样的:
bool invalidateCorrectTags = false;
List correctTags = [];
List get getCorrectTags {

  if (this.invalidateCorrectTags) {
    this.invalidateCorrectTags = false;
    if(this.allowTags)
      this.correctTags  = this.tags.map((t) => t.name).toList();
    else
      this.correctTags = this.contentTags;
  }

  return this.correctTags;
}

并且我必须在每个 setter 中将invalidateCorrectTags设置为true,其中所述 setter 中的更改将影响getCorrectTags的结果。有更好的方法吗?

最佳答案

最近从WebStorm中删除了禁用检查模式的选项

https://youtrack.jetbrains.com/issue/WEB-24466

提到的解决方法是添加

<entry key="DART_FLAGS" value="--checked" />

[configuration]/options/web-browsers.xml

08-03 20:53