【发布时间】:2020-01-21 09:46:01
【问题描述】:
如果我在 MyWidget 中实例化一个 BLoC,我通常会使用 StatefulWidget 并在 dispose 方法中关闭流,如下所示:
class _MyWidgetState extends State<MyWidget> {
...
@override
void initState() {
// ...
bloc = MyBloc()
}
@override
void dispose() {
bloc.stream.close();
// ...
}
...
}
但是,当我将提供的 MyBloc 实例注入 MyWidget 时(可能通过 MyWidget 的构造函数),我关闭了小部件层次结构更高的流,因为 MyWidget 在用户导航离开和返回 MyWidget。
class MyWidget extends StatefulWidget {
final MyBloc bloc;
MyWidget(this.bloc) ... ;
..
}
class _MyWidgetState extends State<MyWidget> {
...
@override
void dispose() {
// Not closing stream here anymore. Closing higher up because
// I don't get a fresh instance when user comes back here;
// ...
}
}
这会导致内存泄漏吗?
【问题讨论】:
标签: flutter dart dependency-injection stream bloc