Dart / WebStorm "Отмена экземпляров dart.async.StreamSubscription" - PullRequest
0 голосов
/ 12 ноября 2018

Я использую WenStorm 2018.2.5 (зарегистрирован) с плагином Dart.

При редактировании простого кода редактор показывает мне сообщение:

Отмена экземпляровdart.async.StreamSubscription

enter image description here

Я не понимаю, что означает это сообщение.Я не вижу, что не так с кодом.И, если я запускаю проверку кода, результат будет: "No suspicious code found".

Есть идеи?

Примечание:

const int eventsCount = 5;
const int waitBetweenTwoEvents = 1;

typedef Streamer = Stream<int> Function();

...

Streamer streamCreator = () async* {
  for(int i=0; i<eventsCount; i++) {
    yield i;
    sleep(Duration(seconds: waitBetweenTwoEvents));
  }
};

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Как уже отмечали другие, у вас есть совет, который требует от вас отмены подписок.

В этом случае я бы просто не создавал подписку вообще.Потоковые подписки хороши, когда вы хотите контролировать поток, приостанавливая или отменяя его заранее или обрабатывая ошибки.Здесь вы просто хотите сделать что-то для каждого события данных.Это то, что делает метод Stream.forEach.Он даже возвращает будущее, которое завершается, когда поток завершен или имеет ошибку, поэтому вам не нужно делать subscription.asFuture.

0 голосов
/ 12 ноября 2018

Это показано, когда у вас включено правило линтера в analysis_options.yaml

linter:
  rules:
    - cancel_subscriptions

Либо

  • добавить subscription.cancel() где-нибудь в этом классе.
  • удалить правило линтера
  • добавить комментарий // ignore: cancel_subscriptions строку перед или в конце строки с предупреждением
  • добавить комментарий // ignore_for_file: cancel_subscriptions где-нибудь в файле
...