集团模式:每个屏幕都有自己的集团?

Bloc Pattern: Every screen gets its own bloc?

我正在学习 Flutter 的 bloc 模式并且似乎有一条反复出现的建议 "every screen should have its own bloc"。

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

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

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

好了,给你。


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

是的。您可以按照以下方式构建您的应用程序。

Widgets -> Bloc -> Repository -> Local database/ Remote API

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

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


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

是的。