我是一个相当新的 Flutter 程序员,所以请原谅以下问题中的任何缺陷......</p>
我正在与结构/架构困境作斗争。这是背景: 应用原理:
- 我的应用程序允许其用户检查他们所在地区可用的少量工作,以及他们是否有时间并在适当的位置执行工作以获得报酬,
- 该应用程序使用标准 REST API(不是 Firebase),因此不能依赖服务器发送状态更改通知来触发重新获取数据,
- 关键要素是 (1) 给定地址的最新工作列表 - 其他用户可能已经在某个地址接受了工作(定时刷新列表,例如每 5 分钟一次),以及 (2) 应用程序需要跟踪用户的位置,如果用户在刷新时间内移动超过 2 公里,则相应地向服务器请求工作,
挑战:
- 我猜在基本层面上,应用程序应该有以下提供者:(1) auth - 提供 authToken,(2) geolocation - 定期检查用户的位置,(3) jobList - 特定位置(获取高级职位描述和地址(, (4) jobDetails – 获取执行特定作业的准确指令,
- 如您所见:(2) 地理位置和 (3) jobList – 需要以编程方式刷新(间隔或在地理位置发生某些变化时),而 (1) auth, (4) jobDetails 由用户触发。
最大的问题 ;) 是……对于上述类型的应用程序的正确架构是什么?进一步来说:
- 我应该使用服务连接到服务器 API,而这些服务又会被提供商使用吗?
- 如何确保在计时器上以编程方式重新获取jobList并从地理位置重新定位事件?
- 如何持续监听位置变化以检测重定位但又不会让应用程序不堪重负?
- 我应该将(快速过时的)jobLIst 数据存储在其对象类中,还是应该使用设置提供程序或本地数据库,或者可能有一种简单的方法来存储最新的 JSON 响应而不必构建设置提供程序或数据库映射?
- 在我对 Auth api 的所有调用中,我需要提供 deviceId - 如何使其在整个应用程序中可用 - 这是非常静态的,但在身份验证中需要,所以检查它是否应该是身份验证提供程序的一部分?
如果您能对上述内容发表评论或提出相关示例的来源,我将不胜感激。
谢谢和欢呼!