首页 > 解决方案 > 适当的状态管理架构来实现项目的读/未读

问题描述

背景:我们正在实施一个新闻应用程序。现在,您可以假设所有用户的新闻都是相同的,并根据我们设置的参数(根据趋势和日期)维护一个顺序。

问题:我们不确定跟踪用户阅读内容的最佳实现是什么。我们希望能够配置一种方式来跟踪用户阅读的内容和未阅读的内容。

假设:您可以假设数据库中的帖子按时间降序排列。

所以,理想的场景是:当有帖子:A,B,C,D,E从应用程序中的服务器获取,并且用户阅读A,B。现在用户只有在查看下一个帖子时才能看到 C、D、E 。如果他们做previous,他们会按照以下顺序 B-> A 看到帖子。

此外,当 P,Q 添加到数据库时,现在用户必须按照 P->Q->C->D->E 等顺序查看一篇文章。

示例:假设我们的应用程序中现在有 20 条新闻,加文拿起手机开始阅读我们的应用程序。在使用过程中,他发现自己忙于其他工作,因此在阅读了 5 篇新闻帖子后退出了该应用程序。

我们现在面临的挑战是找出确保 Gavin 不必重新阅读他已经阅读过的 5 个帖子的最佳方法。

我们认为可以解决此问题的一种方法是使用索引。我们可以假设上下文中提到的帖子的统一排序,因此我们可以使用索引来跟踪 Gavin 按新闻顺序排在最后的位置,并根据该索引向他显示新闻。

然而,这种方法的一个问题是,当 Gavin 拿起他的手机并再次使用我们的应用程序时,我们很容易有 5 个新帖子。所以,如果我们有基于日期的新闻,从技术上讲,索引方法意味着我们省略了 5 个未读的新帖子,而不是 5 个已读的旧帖子。

我们还考虑维护三个列表:已读、未读和新列表,以便我们仅获取不在列表中的帖子。例如,在我最初的示例中:ABCDE最初处于未读状态。然后,用户读取AB后, read 变为AB。同时,在数据库中添加PQ时, PQ会作为PQCDE添加到未读帖子列表中。

你怎么解决这个问题?欢迎提出任何建议,因为我们有点认为我们在解决问题时没有开箱即用。谢谢!:)

标签: flutterdartarchitecture

解决方案


当我第一次阅读问题时,解决方案最终在我的脑海中也有2个不同的未读列表,新列表被添加到未读列表的末尾,未读列表以相反的顺序显示,因此最近的列表位于顶部。然而,这是最有效的方法吗?可商榷。例如,如果新数字的数量增加很多,那么内存效率会很低。但我一般假设人数很少。


推荐阅读