这个问题通常是由于使用单例或切换 widget 时未停止 Stream 导致,可以使用 dispose 或 close 方法停止 Stream。例如:
StreamController
Stream
int _counter = 0;
incrementCounter() { _counter++; _counterController.add(_counter); }
@override void dispose() { _counterController.close(); // 在 dispose 中停止 Stream super.dispose(); }
代码中的例子是在所有使用 StreamController 的 widget 中实现了 dispose 方法,并在 dispose 方法中关闭了 StreamController。