【问题标题】:How to use dispose with flutter bloc?如何将 dispose 与颤振块一起使用?
【发布时间】:2021-10-11 18:00:48
【问题描述】:

我有这个有状态的小部件,它使用一个名为 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 定义为有状态小部件的成员变量是否正确?

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

【问题讨论】:

    标签: flutter dart state bloc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2022-08-19
      • 1970-01-01
      相关资源
      最近更新 更多