首页 > 解决方案 > Dart 的广播流中的 forEach 会泄漏吗?

问题描述

我有一个StreamController.broadcast()我在创建时将它传递Steam给我的许多 Flutter 小部件的方法。

由于每次build我都会重新创建这些小部件,我想知道Stream.forEach()在这些小部件内部使用是否不会导致内存泄漏,因为forEach()没有关闭Subscription. 我想知道这些Subscription对象是否不会被清理,或者即使小部件本身不会内存不足。

标签: flutterdartdart-async

解决方案


是的,它会的。

监听器一直保持到流结束或发出错误为止。

因此,如果您在Stream.forEachinside进行操作build,那么任何对小部件的重建都会添加一个侦听器,而不会删除前一个侦听器。


推荐阅读