什么时候应该在 Flutter 中使用 BLoC 模式?

Posted

技术标签:

【中文标题】什么时候应该在 Flutter 中使用 BLoC 模式?【英文标题】:When should I use BLoC pattern in Flutter? 【发布时间】:2020-06-14 01:30:55 【问题描述】:

我最近读到了BLoC(业务逻辑组件),我正在构建一个应用程序来从 api 检索数据,我想知道什么时候应该创建一个 bloc 当我不应该使用 Flutter_BLoC 包时,似乎我必须为每个屏幕创建一个块,对吗?

【问题讨论】:

不是针对每一个屏幕,而是针对每一个能够保持任何状态变化的组件。 bloc 看起来像老派的 Flutter。包提供者是 Flutter 食谱推荐的。 @FederickJonathan 太棒了,谢谢! @TedHenry 你能解释一下吗? 就像我有一个主页一样,我应该创建类似 hompage_bloc 的东西吗?或者我应该创建 Pageview_blocRecommended_bloc ...等 【参考方案1】:

每当您开始研究 Flutter 的架构时,都无法绕过 BLoC 模式,但它是如何工作的以及我们如何实现它?

BLoC 代表业务逻辑组件,是 Flutter 架构中比较流行的方法之一。通过在我们的屏幕和数据层之间放置一个 BLoC,它使我们能够在我们的存储库和小部件之间传递数据,并在数据更改时更新 UI,而无需手动更新状态。它来自 android,实际上与我们在原生开发中使用的 ViewModel 和 LiveData 结构有一些相似之处。

阅读more here

【讨论】:

我了解这样做的主要过程,但就我而言,我有很多屏幕,每个屏幕都有很多小部件和一个未来的构建器,我该如何集成呢? 你可以使用 bloc 来加载/监听数据变化。 所以你的意思是屏幕上的每个组件或小部件的块 类似的东西。但主要用于需要更改状态或更新的小部件或屏幕 你能解释一下“在我们的存储库和小部件之间传递数据”这句话中的“存储库”是什么意思吗?你的意思是存储库=块吗? @格里芬

以上是关于什么时候应该在 Flutter 中使用 BLoC 模式?的主要内容,如果未能解决你的问题,请参考以下文章

使用 flutter_bloc 库有啥缺点

Flutter Bloc 不会改变 TextFormField 的初始值

Flutter 从其他 Bloc 监听 Bloc 状态

在 Flutter 中使用 Bloc/Cubit 时绕过 CONTEXT

使用 Provider 向整个 Flutter 模块全局提供 BLoC

Dart/Flutter 中 BLoC 模式的最佳实践