首页 > 解决方案 > 集团模式:每个屏幕都有自己的集团?

问题描述

我正在学习 bloc 模式,Flutter似乎有一条反复出现的建议是“每个屏幕都应该有自己的 bloc”。

但是,如果您向服务器查询将在多个屏幕中使用的数据怎么办?为同一条数据多次访问服务器似乎是多余的,甚至是浪费的,特别是如果您知道数据没有更改(例如,当没有使用任何改变/更新它的操作时)。

无论如何,您可以以某种方式保存该数据以重复使用它吗?在存储库级别存储以这种方式使用的数据是个好主意吗?或者这只是使用集团的可接受成本?

标签: flutterbloc

解决方案


架构决策总是自以为是,没有灵丹妙药。

好吧,给你。


无论如何,您可以以某种方式保存该数据以重复使用它吗?

是的。您可以通过以下方式构建您的应用程序。

小部件 -> Bloc -> 存储库 -> 本地数据库/远程 API

因此,您的集团永远不会直接进行任何 API 调用,但您的 repo 层会这样做。因此,repo 层可以决定是从远程 API 还是本地 DB 甚至从内存缓存中获取数据。这样,您可以在应用程序的多个屏幕上重用已缓存的数据。

有趣的是,如果您以这种方式构建您的应用程序,对您的代码进行单元测试将非常容易。


在存储库级别存储以这种方式使用的数据是个好主意吗?

是的。


推荐阅读