如何使用 flutter bloc 进行 dispose?

Hai*_*sen 3 state dart 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
   }

Run Code Online (Sandbox Code Playgroud)

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

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

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

Ami*_*r_P 5

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

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