我正在学习块模式Flutter,似乎有一个反复出现的建议:“每个屏幕都应该有自己的块”。
但是,如果您向服务器查询将在多个屏幕中使用的数据怎么办?对于同一条数据多次访问服务器似乎是多余的,甚至是浪费的,特别是如果您知道数据没有更改(例如,当没有使用改变/更新数据的操作时)。
无论如何,您是否可以以某种方式保存该数据以重用它?在存储库级别存储以这种方式使用的数据是个好主意吗?或者这只是使用区块的可接受成本?
架构决策总是非常固执己见,并且没有灵丹妙药。
好吧,给你。
离线是的。您可以按以下方式构建您的应用程序。
小部件 -> 块 -> 存储库 -> 本地数据库/远程 API
因此,您的区块永远不会直接进行任何 API 调用,但您的存储库层可以。因此,repo 层可以决定是否从远程 API 或本地 DB 甚至内存缓存中获取数据。这样,您就可以在应用程序的多个屏幕上重复使用已缓存的数据。
有趣的是,如果您像这样构建应用程序,那么对代码进行单元测试将非常容易。
是的。