Flutter 颤振数据存储:本地存储与云存储

Flutter 颤振数据存储:本地存储与云存储,flutter,cloud,storage,local,Flutter,Cloud,Storage,Local,关于用户数据的本地和远程存储的问题。对于用户从API访问数据并可以对数据进行收藏或个性化的常见情况,是否有最佳做法 我看过一些教程,例如电影浏览应用程序,用户可以制作喜爱电影的列表,这些个性化数据存储在本地(例如在sqflite中),以及其他远程存储这些数据的教程,例如firebase。firebase有一个离线模式,以便以后可以同步数据。在这种情况下,设置本地存储和云存储是否是常见的使用情形?这种情况是否有一种常见的做法? 感谢您的见解。这不是一个具体的颤振问题,更多的是一个一般的应用程序开发

关于用户数据的本地和远程存储的问题。对于用户从API访问数据并可以对数据进行收藏或个性化的常见情况,是否有最佳做法

我看过一些教程,例如电影浏览应用程序,用户可以制作喜爱电影的列表,这些个性化数据存储在本地(例如在sqflite中),以及其他远程存储这些数据的教程,例如firebase。firebase有一个离线模式,以便以后可以同步数据。在这种情况下,设置本地存储和云存储是否是常见的使用情形?这种情况是否有一种常见的做法?
感谢您的见解。

这不是一个具体的颤振问题,更多的是一个一般的应用程序开发问题。本地存储和云存储都很常见,但我不这么认为。如果你与API后端交互,我不会认为它是你的应用程序的云存储。相反,将其视为应用程序总体架构中的不同组件。您可以使用API/后端组件,这样它就不是应用程序的一部分,而是应用程序与之交互的部分

我假设您知道API的用途。返回要查看的数据,跟踪用户配置文件信息和其他敏感信息

说到本地存储,我想说,本地存储最常见的场景是结果缓存和存储API在每个会话上都需要的信息,以使用户体验更好。请参见以下两个示例:

  • 在instagram上,他们存储您的“Feed watermark”,这是一个链接到特定结果集的字符串值,因此当您打开应用程序并再次请求时,他们会返回该结果集,以及任何新的-本地存储
  • 它们还“本地存储”(更好地称为缓存)一小部分来自帖子的提要,一个包含故事的用户配置文件列表,以及用于即时和脱机访问的DM。这样,当应用程序加载时,它在执行获取新信息的操作时会显示一些内容。-缓存
  • 它们还存储您的登录令牌,永不过期。-本地存储

tl;博士:是的。如果您需要每个会话上的数据,以便以安全的方式在本地使用API存储,并使用它与“云存储”交互。

感谢您的回答,我想这些都是使控制和集成本地和远程存储成为任何复杂应用程序所必需的考虑因素。对于一个简单的电影浏览应用程序,您可以保存收藏,但也可以共享它们,以便其他人可以看到彼此的收藏,我想这将是一个决定本地和远程存储之间平衡的问题。但我还没有找到任何关于同步本地数据(如sqflite等)和远程数据库(如firebase)的教程,甚至没有找到讨论这些场景的文章。@user2342708您的想法是错误的。如果我有最喜欢的,我就不会把它放在本地。我只要在我的.api/setFavorites?id=24上调用一个方法,我就会立即在我的客户机上指出它是最受欢迎的。如果我想要我的帐户的所有收藏夹,我只需要创建一个api端点并调用my.api/getFavorites?userId=9。我不会将任何东西从本地同步到API。如果SetFavorite http请求失败,则我将重试(最多2次),然后显示一条消息,说明它不能像所有社交媒体一样“喜欢/喜爱”电影。@user2342708如果您想无限次尝试,则我将使用共享首选项存储id列表(列表)如果列表中有任何Id,我会调用我的API来更新该Id,如果请求成功,我会将其从列表中删除,然后执行其余操作,直到磁盘上没有剩余的Id为止。然后API将有最喜欢的列表。redux_offline为您完成此操作,因此无需编写它,但这就是它背后的想法。此外,这个问题将永远无法回答。我想你不会得到更多的答案。再次感谢,这对我非常有用,因为它处理脱机/联机决策,这似乎是一个问题领域,因为同步、缓存问题。因此,我猜sqflite在Flatter应用程序中的用途只是在没有计划网络更新的情况下,并且该应用程序用于存储一个用户的数据。否则,为什么要使用sqflite或其他本地数据库存储,如objectbox?但是,如果只使用网络/云/api存储,而网络不可用时,有什么好的工作流程可以确保数据不会丢失?@user2342708您的脑海中似乎有一个非常复杂的移动应用程序视图。这取决于您所说的数据丢失是什么意思,只有在下载或上载大型文件时才会发生这种情况。在这种情况下,您可以在下载时写入每个字节并跟踪它,使您的端点可流化,以便您可以从某个点恢复。就数据而言,如果您请求了某个内容,但它没有显示,请重试或显示一个对话框,告诉用户稍后再试。如果您试图更新API上的某些内容,也可以添加本地缓存以供重试。