如何使用 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的成员变量是否正确?

如果没有,那么如何在 StatefulWidgetdispose() 方法中获取 bloc 的实例以添加处置事件?

据我所知,没有必要定义 dispose 事件。 Bloc class 有一个 close 函数,该函数将在处理底层小部件 (InheritedProvider) 时调用。您可以在 BLoC 中重写该函数并执行所需的任何操作。

class MyBloc extends Bloc<MyBlocState> {
  @override
  Future<void> close() {
    // dispose
    return super.close();
  }
}