Я предполагаю, что вы используете Cloud Firestore, тогда вам может потребоваться правильно структурировать ваши данные в базе данных, но я дам вам пример, чтобы все заработало.
Предположим, что структура документов в Firestore аналогична "posts"/postId
, где "posts"
- это коллекция, а postId
- общий документ в коллекции постов, где у каждого сообщения есть кнопка «Нравится».
Теперь мы можем структурировать пользовательский документ в Firestore следующим образом:
uid: //(here goes the postId, you should also name the document by the same postId)
likedBy: //(This is an array of userId's, where if the user likes this post his Id will be placed here)
Обратите внимание, что вам необходимо аутентифицировать пользователей и получать их идентификаторы. Если это не функция в вашем приложении, то, возможно, вам нужно использовать общие настройки, как кто-то заявил.
Затем во флаттере нужно проверить, понравился ли пост пользователю. Я не буду рассказывать вам, как структурировать архитектуру вашего приложения, но выяснить, нравится ли пользователю публикация с кнопкой «Мне нравится» или нет, с помощью следующего асинхронного кода Dart:
bool isPostLiked;
Future<DocumentSnapshot> docSnapshot = Firestore.instance.collection('posts').document(postId).get();
DocumentSnapshot doc = await docSnapshot;
if (doc['likedBy'].contains(userId)) {
isPostLiked = true;
} else {
isPostLiked = false;
}