flutter - Dart 的广播流中的 forEach 会泄漏吗?
问题描述
我有一个StreamController.broadcast()
我在创建时将它传递Steam
给我的许多 Flutter 小部件的方法。
由于每次build
我都会重新创建这些小部件,我想知道Stream.forEach()
在这些小部件内部使用是否不会导致内存泄漏,因为forEach()
没有关闭Subscription
. 我想知道这些Subscription
对象是否不会被清理,或者即使小部件本身不会内存不足。
解决方案
是的,它会的。
监听器一直保持到流结束或发出错误为止。
因此,如果您在Stream.forEach
inside进行操作build
,那么任何对小部件的重建都会添加一个侦听器,而不会删除前一个侦听器。
推荐阅读
- ios - NSPasteboard.WritingOptions 的目的是什么?
- flutter-test - 测试外部库小部件时没有发现材料应用程序错误
- python - 带有 FK 约束的 Django 导入导出
- java - Java 将 Tuple4 列表转换为嵌套映射
- reactjs - 使用 Axios 和 React Hooks 的条件 API 调用
- git - 删除分支将删除该分支中的所有数据
- ruby-on-rails - Azure Rails 中的 Faraday::ConnectionFailed 错误
- python - 用 Python 保存 Excel 文件,但我希望以前的数据和单元格编码不会丢失
- salesforce - 队列成员没有收到电子邮件通知
- jquery - 数据表警告:表 id=Datatables_Table_0 - Ajax 错误 Laravel 8