Flutter:离线本地存储与在线同步,例如火力基地

时间:2019-03-06 02:39:01

标签: firebase flutter user-experience sqflite

这是常见/合理的用例吗? 应用程序允许用户在本地保存收藏夹,因此用户无需注册。

然后,用户随后希望共享他们的收藏夹。

因此,收藏夹数据需要从本地同步到远程。通常,用于flutter的本地存储是sqflite,而firebase / store是远程的。但是,这似乎很麻烦,因为必须将sql转换为nosql。

我认为这将是UX等的普遍问题,但是我找不到关于此问题的任何讨论?也许强迫用户创建帐户是最通用的解决方案?

2 个答案:

答案 0 :(得分:0)

通常的理解是,如果您没有用户帐户,那么您的名称就不会与任何用户数据相关联。您不必强迫用户拥有一个帐户或将其锁定。

当他们最喜欢的东西出现时,只显示一个对话框,告诉他们“如果您没有帐户,您的收藏夹只会存储在设备上。如果您希望收藏夹随处可见,请创建一个帐户”,然后显示“创建帐户”或“不,谢谢”

创建帐户:转到帐户创建页面

否,谢谢:将设备添加到收藏夹列表中,并允许用户继续执行您的应用程序。

根据我所看到的,这里没有问题可以解决。如果您没有帐户,则无法使用帐户功能。如果您在没有输入任何内容的情况下跟踪用户,那么这也有点非法和令人毛骨悚然,因此无需限制如何跟踪同一用户。

另一种思考方式是使注册变得如此简单,以至于他们不介意并保证这样做是值得的。不会用于垃圾邮件或信息销售。以应用程序为例,即使您需要手机号来发送消息,它也只是用作唯一标识符,与设备的号码无关。

询问他们的电话号码或电子邮件,或仅询问任何电子邮件,您很可能会收到虚假信息。

您的分析怎么说?您是否收到用户说他们在其他设备上丢失了所有信息的请求?有多少人在使用您喜欢的功能?

答案 1 :(得分:0)

我可能来晚了一点,但这是我的 2 美分。

Sql 到 NoSql 的转换并不麻烦。事实上,有一个合理的用例。我对即将构建的应用有同样的要求。

无论如何,要将数据存储在 RDMDBNoSQLDB 中,您需要一个数据 model 以确保您的应用程序的一致性。如果用户一直在离线使用该应用,而他们后来选择上网,您可以允许他们创建 Remote Account,然后检查他们是否有 local 收藏夹。如果他们这样做,您必须询问他们是否愿意将它们导入到 remote 存储中。如果他们选择这样做,那么您必须从 read 存储中local 他们的收藏并将它们存储在 List<Model> 然后 map() 中,然后返回到 {{1 }} 存储。

online 可以接受 NoSqlDB 类型的数据,因此您的 json 应为此目的(以及其他)包含转换 modelfromMap()。< /p>

当我开始做这件事时,我会分享我的代码(如果我记得回来的话)。