繁体   English   中英

如何保存用户“喜欢”帖子的 state?

[英]how can I save the state of the 'liked' post by the user?

我在 firestore 中有两个 collections,“用户”和“帖子”。 主页是所有帖子都显示在列表视图中的地方,每个帖子都有一个“喜欢”按钮。 我将喜欢的帖子保存在一组final _likedPosts = Set<Posts>(); 在页面上,但它只是暂时保存喜欢的帖子,一旦应用程序关闭,它就会丢失所有数据。 如何永久保存用户的 _likedPosts 以便保留数据。 我应该为用户保留 _likedPosts 做什么样的查询? 或者还有其他方法吗?

这就是 Icon 和 onTap 目前的样子,

final _likedPosts = _savedPosts.contains(post);

Icon(_likedPosts ? Icons.favorite : Icons.favorite_border,
            color: _likedPosts ? Colors.red : null),
        onTap: () {
          setState(() {
            if (_likedPosts) {
              _savedPosts.remove(post);
            } else {
              _savedPosts.add(post);
            }
          });
        }

您是否正在保存某个用户的点赞帖子? 然后我建议获取该帖子(ID)并将其保存到每个用户的用户文档 Liked-Posts 中的数组中。 因为 state 不会持续存在或无法保存,除非您使用外部数据库。

你必须像 class StatefulWidget 这样创建这个项目

class MyLikeButton extends StatefulWidget { \\...

并在添加到此项的 state class 后添加“with AutomaticKeepAliveClientMixin”,如下所示:


class _MyLikeButtonState extends State<MyLikeButton> with AutomaticKeepAliveClientMixin {

  @override
  bool get wantKeepAlive => true; \\....

这将使滚动时项目中的更改保持活动状态,这是你想要的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM