flutter - 集团模式:每个屏幕都有自己的集团?
问题描述
我正在学习 bloc 模式,Flutter
似乎有一条反复出现的建议是“每个屏幕都应该有自己的 bloc”。
但是,如果您向服务器查询将在多个屏幕中使用的数据怎么办?为同一条数据多次访问服务器似乎是多余的,甚至是浪费的,特别是如果您知道数据没有更改(例如,当没有使用任何改变/更新它的操作时)。
无论如何,您可以以某种方式保存该数据以重复使用它吗?在存储库级别存储以这种方式使用的数据是个好主意吗?或者这只是使用集团的可接受成本?
解决方案
架构决策总是自以为是,没有灵丹妙药。
好吧,给你。
无论如何,您可以以某种方式保存该数据以重复使用它吗?
是的。您可以通过以下方式构建您的应用程序。
小部件 -> Bloc -> 存储库 -> 本地数据库/远程 API
因此,您的集团永远不会直接进行任何 API 调用,但您的 repo 层会这样做。因此,repo 层可以决定是从远程 API 还是本地 DB 甚至从内存缓存中获取数据。这样,您可以在应用程序的多个屏幕上重用已缓存的数据。
有趣的是,如果您以这种方式构建您的应用程序,对您的代码进行单元测试将非常容易。
在存储库级别存储以这种方式使用的数据是个好主意吗?
是的。
推荐阅读
- python-3.x - 如何使用 Kombu 在rabbitmq 队列上设置单个活动消费者
- javascript - 如何读取 json 格式的嵌套对象并将它们作为行附加到表中
- php - preg_match(): 编译失败 php 从 5.6 升级到 7.4
- javascript - React Webpack,不要在标题中加载额外的 CSS
- node.js - 将 Socket.io 与 https 一起使用
- node.js - 节点 Sass 安装失败
- docker - 为什么这个文件被复制到 Docker 镜像的根目录而不是工作目录
- javascript - 使用 javascript 分配不同的底边框颜色活动类
- python - 为小部件设置背景图像并使其填充 resizeEvent 中的整个小部件
- javascript - Gremlin 的 valueMap() 返回一个带有 JS 和 Neptune 的空对象