From 72f61ea804fa5c4317ee7b0dd77569544bfca49d Mon Sep 17 00:00:00 2001 From: Lea Date: Sun, 1 Jan 2023 00:56:12 +0100 Subject: [PATCH] button to save/unsave --- lib/widgets/homepage_post.dart | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/widgets/homepage_post.dart b/lib/widgets/homepage_post.dart index a381e51..92eb4c4 100644 --- a/lib/widgets/homepage_post.dart +++ b/lib/widgets/homepage_post.dart @@ -1,5 +1,6 @@ import 'package:feet/pages/article.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import '../api/api.dart'; // TODO use some localization library @@ -42,9 +43,8 @@ class _HomepagePostState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - 'Marking post as ${post.isRead ? 'Unread' : 'Read'}', - style: TextStyle(color: theme.colorScheme.onBackground) - ), + 'Marking post as ${post.isRead ? 'Unread' : 'Read'}', + style: TextStyle(color: theme.colorScheme.onBackground)), duration: const Duration(seconds: 2), backgroundColor: theme.colorScheme.secondaryContainer, ), @@ -69,6 +69,26 @@ class _HomepagePostState extends State { clipBehavior: Clip.antiAlias, child: Row( children: [ + GestureDetector( + onTap: () async { + HapticFeedback.lightImpact(); + await post.api + .request() + .markItem( + post, + post.isSaved + ? ItemMarkType.unsaved + : ItemMarkType.saved) + .execute(); + setState(() {}); + }, + child: Icon( + post.isSaved + ? Icons.bookmark + : Icons.bookmark_add_outlined, + color: + post.isSaved ? const Color(0xFFF3A13E) : null), + ), Text('${post.api.cache.feeds.get(post.feedId)?.title}'), const Text(' \u2022 '), post.author.isNotEmpty