使用 DI 将 BLoC 作为单例注入的效果以及在哪里关闭流?

Aja*_* Rn 6 dependency-injection stream flutter rxdart bloc

我正在使用inject.dart将我的块作为单例注入,这是一种不好的做法,即会导致内存泄漏吗?

由于我使用的所有流都是来自 RxDart 的广播流,我想知道单例是否会工作得更好?

如果不是不好的做法,那么关闭流的最佳位置是什么?由于其他小部件可能仍在使用流,因此在有状态小部件(订阅 bloc)的 Dispose() 中执行此操作是否会导致问题?

Din*_*esh 2

您不应该使用单例,因为它会消耗太多内存。而是将块注册为工厂类。

请参阅此 github 问题 - https://github.com/felangel/bloc/issues/711

如果您在处置块后将它们注册为单例,则无法再次使用该块,但如果您注册为工厂,则可以在void dispose(){...}小部件的方法中处置它。