如何将 dispose 与颤振块一起使用?

我有这个有状态的小部件,它使用一个名为 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
   }

正如你所看到的,我需要在完成后处理集团的一些成员,这是通过添加一个 dispose 事件来完成的。

但我不知道将 bloc 定义为有状态小部件的成员变量是否正确?

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

stack overflow How to use dispose with flutter bloc?
原文答案
author avatar

接受的答案

据我所知,不需要定义 dispose 事件。 Bloc 类有一个 close 函数,它将在提供程序小部件 ( BlocProvider ) 状态被释放时调用。您可以在 BLoC 中覆盖该函数并执行所需的任何操作。

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

答案: