使用Getx包更改图标的状态

时间:2020-10-29 13:39:43

标签: flutter dart flutter-layout

使用Getx程序包进行状态管理并从Cloud Firestore获取数据。我正在使用Getbuilder更改状态。当我按下此图标时,我有一个类似的图标,当前用户的ID存储在数据库的列表中,并即时检查该列表是否包含当前用户的ID,然后即时切换颜色。一切正常,无需更改颜色。 帮助我如何更改不喜欢的图标的颜色。

这是我的图标代码:

class ArticleOptions extends StatelessWidget {
final DocumentSnapshot articles;

ArticleOptions({this.articles});

@override
Widget build(BuildContext context) {
return Padding(
  padding: const EdgeInsets.only(top: 15, right: 30, left: 30, bottom: 15),
  child: GetBuilder<ArticlesController>(
    init: ArticlesController(),
    builder: (controller) {
      return Row(
        children: [
          InkWell(
            onTap: () {
              controller.likeArticle(controller.currentUser.uid, articles.data()['id']);
            },
            child: Row(
              children: [
                Text(
                  controller.article.data()['likes'].length.toString(),
                  style: TextStyle(
                    fontSize: 15,
                    fontWeight: FontWeight.bold,
                    color: CustomColors.blackColor,
                  ),
                ),
                SizedBox(
                  width: 5,
                ),
                SvgPicture.asset(
                  'assets/Heart.svg',
                  height: 22,
                  color: articles
                          .data()['likes']
                          .contains(controller.currentUser.uid)
                      ? Colors.pink
                      : Colors.grey.withOpacity(0.7),
                ),
              ],
            ),
          ),
        ],
      );
    },
  ),
);
 }
}

这是我喜欢文章的方法:

Future<void> likeArticle(String userId, String articleId) async {
DocumentSnapshot doc = await _articlesCollection.doc(articleId).get();
if (doc.data()['likes'].contains(userId)) {
  await _articlesCollection.doc(articleId).update({
    'likes': FieldValue.arrayRemove([userId])
  });
} else {
  await _articlesCollection.doc(articleId).update({
    'likes': FieldValue.arrayUnion([userId])
  });
 update();
}

}

此处是Firestore的字段: enter image description here

0 个答案:

没有答案