使用 flutter_bloc 包时,何时实际手动关闭 bloc?

Posted

技术标签:

【中文标题】使用 flutter_bloc 包时,何时实际手动关闭 bloc?【英文标题】:When to actually close a bloc manually when using the flutter_bloc package? 【发布时间】:2021-06-25 06:31:02 【问题描述】:

我最近在 youtube (https://www.youtube.com/watch?v=knMvKPKBzGE&t=3s) 上观看了 felix Angelov 的 flutter_bloc package (https://pub.dev/packages/flutter_bloc) 演讲,非常棒!

我对在 dispose 方法中手动关闭 bloc 有点困惑。我从演讲中听说,如果我们使用flutter_bloc包,我们不必调用blocs的dispose方法,如果有错误请纠正我。

提前致谢

【问题讨论】:

【参考方案1】:

当您将BlocProvider 与构建器一起使用时,BlocProvider 负责创建和关闭 Bloc。如果您想为新路由提供现有 bloc,则应使用BlocProvider.value,因为它不会自动关闭 bloc。

可以参考documentation

在大多数情况下,应该使用 BlocProvider 创建新的块,这些块将可供子树的其余部分使用。在这种情况下,由于 BlocProvider 负责创建 bloc,它会自动处理关闭 bloc。

在某些情况下,BlocProvider 可用于将现有块提供给小部件树的新部分。当需要将现有集团提供给新路线时,这将最常用。在这种情况下,BlocProvider 不会自动关闭 bloc,因为它没有创建它。

【讨论】:

以上是关于使用 flutter_bloc 包时,何时实际手动关闭 bloc?的主要内容,如果未能解决你的问题,请参考以下文章

使用 flutter_bloc 库有啥缺点

由于某种原因不能使用flutter_bloc

eclipse maven 手动添加依赖包时,不会自动搜索怎么办?

使用带有flutter_bloc的Equatable类

使用flutter_bloc提交时如何验证表单?

flutter_bloc :使 initialState 方法异步