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

Mat*_*ner 7 flutter bloc

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

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

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

Dar*_*ish 4

架构决策总是非常固执己见,并且没有灵丹妙药。

好吧,给你。


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

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

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

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

有趣的是,如果您像这样构建应用程序,那么对代码进行单元测试将非常容易。


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

是的。