easy_like 0.0.6 copy "easy_like: ^0.0.6" to clipboard
easy_like: ^0.0.6 copied to clipboard

An esay way to handle the like functionality for every use case

Easy Like and Dislike #

The like unctionality can be applied to various entities in the app, such as user profiles, uploaded photos, posts, and comments.

A simple way to handle this is by saving a list of user IDs who liked or disliked an item. However, if the document becomes too large, it can slow down the app and increase costs for network usage on Firebase. Additionally, Firestore documents have a 1MB size limit, which can cause issues when there are too many like.

The easy_like package provides an easy and efficient way to manage the like functionality.

It does not support dislike since most of the community don't provide dislike button. It discourages usres to participate the community.

Installation #

Security rules #

  • On the document, the likes should be open to be written by any one.

Terms #

  • vote is the action of voting(doing) like or unlike.
  • like document is the document under /likes collection.
  • target document is the original document that hte like is refering. It can be a user document, post document, commnet document, chat room document, or what ever.

Database structure for Like and Dislike #

  • /likes/{documentId}: This is where like information saved. And the id of the document is the target document.
  • documentReference: This is the reference of the target document. It's a reference. So it can access the target document regardless of any collection.
  • likedBy: is the list of user uid who did like. If the user unlikes, then the uid will be removed from this field.

Logic #

  • It uses transaction to increase and decrease.
  • Whenever there is a changes on vote, the number of likeCount must be updated in the original document.
  • When the user unlike(or the like again), then the no of like will be decrease.

Displaying the no of likes #

  • Since the likeCount field is saved on the document, it can simply display with the document. so, the easy_like package does not provide andy widgets.

  • Below is how to diplay likeCount on a post detail screen. Note the the post detail screen should listen to the database update.

Example:

TextButton(
  onPressed: () async {
    final like = Like(uid: my.uid, documentReference: widget.post.ref);
    await like.like();
  },
  child: Text(
    'Like'.tr( args: {'n': widget.post.likeCount}, form: widget.post.likeCount),
  ),
),
1
likes
0
points
13
downloads

Publisher

verified publishersonub.com

Weekly Downloads

An esay way to handle the like functionality for every use case

Homepage
Repository (GitHub)
View/report issues

Topics

#firebase #like #dislike #forum #easy-packages

License

unknown (license)

Dependencies

cloud_firestore, flutter

More

Packages that depend on easy_like