Как остановить подписку на поток одноэлементного класса и при повторном создании подписки не продолжать данные этого потока?
class MyClass { static MyClass _instance; factory MyClass() { _instance ??= MyClass._internal(); return _instance; } MyClass._internal(); final BehaviorSubject<Status> _streamController = BehaviorSubject<Status>(); Stream<Status> get stream => _streamController.stream; Function(Status) get sink => _streamController.sink.add; StreamSubscription subscriptionImage; void dispose() { _streamController?.close(); } void listen() { subscriptionImage = stream.listen((Status statusAnalysis) async { if (statusAnalysis.saving) { try { await patch(statusAnalysis); } on MyException catch (e) {} } }); } }
Просто добавьте subscriptionImage?.cancel(); перед
subscriptionImage?.cancel();
subscriptionImage = stream.listen((Status statusAnalysis){...});
, и вы убедитесь, что отменили свою предыдущую подписку (если таковая имеется), прежде чем создавать новую.