Нужно ли отменять StreamSubscription, которые не присваиваются переменной? - PullRequest
0 голосов
/ 11 апреля 2019

Вот 2 разных способа прослушивания потока.Верхний не дает IDE предупреждение об отмене подписки.Нижний делает.

// No IDE warning about cancelling subscription
_loginBloc.state.listen((state) {});

// "Cancel instances of dart.async.StreamSubscription"
StreamSubscription s = _loginBloc.state.listen((state) {});

Если я использую первый метод, нужно ли как-то отменить подписку или она сама себя утилизирует?

1 Ответ

1 голос
/ 12 апреля 2019

Нет разницы в поведении между этими двумя. Вы работаете с ограничением lint . У этого ворса есть ряд ложных срабатываний и недостатков.

Как правило, если вы не используете StreamSubscription, возвращаемое из listen, вы должны использовать forEach вместо.

Если вы знаете, что Stream закончится до того, как все, что слушает, больше не заботятся об этом, нет необходимости явно отменять. Если вы хотите быть уверенным, что хотите отменить, то есть момент, когда слушателю больше не нужен результат - скажем, потому что это виджет, который больше не отображается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...