如何使用 dispose with flutter bloc?
How to use dispose with flutter bloc?
我有这个有状态的小部件,它使用一个名为 RecorderBloc
:
的块
class _RecorderScreenWidgetState extends State<RecorderScreenWidget> {
late final RecorderBloc _recorderBloc;
@override
void initState() {
super.initState();
_recorderBloc = serviceLocator.get<RecorderBloc>();
}
@override
void dispose() {
_recorderBloc.add(RecorderEvent.dispose());
super.dispose();
}
@override
Widget build(BuildContext context) {
//.....ommitted code
}
如您所见,我需要在完成 bloc 的某些成员后对其进行处置,这是通过添加处置事件来完成的。
但不知道将bloc定义为stateful widget的成员变量是否正确?
如果没有,那么如何在 StatefulWidget
的 dispose()
方法中获取 bloc 的实例以添加处置事件?
据我所知,没有必要定义 dispose
事件。 Bloc
class 有一个 close
函数,该函数将在处理底层小部件 (InheritedProvider
) 时调用。您可以在 BLoC 中重写该函数并执行所需的任何操作。
class MyBloc extends Bloc<MyBlocState> {
@override
Future<void> close() {
// dispose
return super.close();
}
}
我有这个有状态的小部件,它使用一个名为 RecorderBloc
:
class _RecorderScreenWidgetState extends State<RecorderScreenWidget> {
late final RecorderBloc _recorderBloc;
@override
void initState() {
super.initState();
_recorderBloc = serviceLocator.get<RecorderBloc>();
}
@override
void dispose() {
_recorderBloc.add(RecorderEvent.dispose());
super.dispose();
}
@override
Widget build(BuildContext context) {
//.....ommitted code
}
如您所见,我需要在完成 bloc 的某些成员后对其进行处置,这是通过添加处置事件来完成的。
但不知道将bloc定义为stateful widget的成员变量是否正确?
如果没有,那么如何在 StatefulWidget
的 dispose()
方法中获取 bloc 的实例以添加处置事件?
据我所知,没有必要定义 dispose
事件。 Bloc
class 有一个 close
函数,该函数将在处理底层小部件 (InheritedProvider
) 时调用。您可以在 BLoC 中重写该函数并执行所需的任何操作。
class MyBloc extends Bloc<MyBlocState> {
@override
Future<void> close() {
// dispose
return super.close();
}
}