如何将 dispose 与颤振块一起使用?
Posted
技术标签:
【中文标题】如何将 dispose 与颤振块一起使用?【英文标题】:How to use dispose with flutter bloc? 【发布时间】: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 定义为有状态小部件的成员变量是否正确?
如果没有,那么如何在StatefulWidget
的dispose()
方法中获取bloc 的实例以添加dispose 事件?
【问题讨论】:
【参考方案1】:据我所知,没有必要定义 dispose
事件。 Bloc
类有一个 close
函数,当底层小部件 (InheritedProvider
) 被释放时将调用该函数。您可以在 BLoC 中覆盖该函数并执行所需的任何操作。
class MyBloc extends Bloc<MyBlocState>
@override
Future<void> close()
// dispose
return super.close();
【讨论】:
以上是关于如何将 dispose 与颤振块一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 ExpansionPanelList/ExpansionPanel 与(Firebase)流一起使用时出现颤振错误