Отключить строгий/проверенный режим в Dart Angular

Я использую WebStorm и Dart Angular, и у меня возникают проблемы с каким-то строгим или проверенным режимом.

Всякий раз, когда я запускаю приложение, используя конфигурацию WebStorm по умолчанию, я получаю ошибочные утверждения Observer reaction functions should not change model., boolean expression must not be null и type 'SubListIterable' is not a subtype of type 'List<Tag>'.

Насколько я понимаю, это происходит из-за того, что Dart VM работает в проверенном режиме, и я хотел бы его отключить. Dartium запускается с опциями --no-sandbox --flag-switches-begin --flag-switches-end, если это важно.

Когда я открываю страницу в Chrome, все в порядке, но, конечно, я не могу отладить.

РЕДАКТИРОВАТЬ: 1-я ошибка, по-видимому, не связана с проверенным режимом. Вот фрагмент того, чего я пытаюсь достичь:

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;
}

и я должен установить invalidateCorrectTags в true в каждом установщике, где изменения в указанном установщике повлияют на результат getCorrectTags. Есть ли лучший способ сделать это?


person Dread Boy    schedule 13.02.2017    source источник
comment
Режим Checked предназначен для предотвращения потенциальных ошибок. А как насчет решения проблем? Первая ошибка (реакция наблюдателя ...) в любом случае не связана с проверенным режимом, насколько я знаю. Ошибки довольно легко исправить.   -  person Günter Zöchbauer    schedule 13.02.2017
comment
Как исправить первую ошибку? Я понимаю последние 2 (несоответствие типов) и уже исправил их, но 1-й требует кэширования и аннулирования этих кэшей в геттерах модели.   -  person Dread Boy    schedule 13.02.2017
comment
Не могли бы вы опубликовать код. Я не знаю, как исправить то, что я не вижу ;-)   -  person Günter Zöchbauer    schedule 13.02.2017
comment
Функции реакции наблюдателя звучат как Angular.Dart 1.x, но вы добавили тег angular2. Какую версию Angular вы используете?   -  person Günter Zöchbauer    schedule 13.02.2017
comment
stackoverflow.com/questions/22637485/   -  person Günter Zöchbauer    schedule 13.02.2017
comment
Решение, предложенное в этой ссылке, такое же, как и я, верно?   -  person Dread Boy    schedule 13.02.2017
comment
Я так не думаю. Эта строка this.correctTags = this.tags.map((t) => t.name).toList(); приводит к тому, что новый объект (List) назначается correctTags. Не понятно, как вы его используете. Если вы привязываетесь к correctTags, все должно работать нормально. Если вы привязываетесь к getCorrectTags, то нет.   -  person Günter Zöchbauer    schedule 13.02.2017
comment
Вы можете попробовать assert(identical(getCorrectTags(), getCorrectTags()));. Если вы не получили ошибку для этого кода, значит, вы все сделали правильно (используйте вместо getCorrectTags() то, к чему привязываетесь в представлении).   -  person Günter Zöchbauer    schedule 13.02.2017


Ответы (1)


Опция отключения проверенного режима была недавно удалена из WebStorm.

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

Упомянутый обходной путь - добавить

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

to [configuration]/options/web-browsers.xml

person Günter Zöchbauer    schedule 13.02.2017